home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / php / pear / Date / TimeZone.php < prev   
PHP Script  |  2004-10-01  |  123KB  |  3,646 lines

  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4: */
  3. //
  4. // +----------------------------------------------------------------------+
  5. // | PHP Version 4                                                        |
  6. // +----------------------------------------------------------------------+
  7. // | Copyright (c) 1997-2003 The PHP Group                                |
  8. // +----------------------------------------------------------------------+
  9. // | This source file is subject to version 2.02 of the PHP license,      |
  10. // | that is bundled with this package in the file LICENSE, and is        |
  11. // | available at through the world-wide-web at                           |
  12. // | http://www.php.net/license/2_02.txt.                                 |
  13. // | If you did not receive a copy of the PHP license and are unable to   |
  14. // | obtain it through the world-wide-web, please send a note to          |
  15. // | license@php.net so we can mail you a copy immediately.               |
  16. // +----------------------------------------------------------------------+
  17. // | Authors: Baba Buehler <baba@babaz.com>                               |
  18. // |                                                                      |
  19. // +----------------------------------------------------------------------+
  20. //
  21. // $Id: TimeZone.php,v 1.6 2004/05/16 12:48:06 pajoye Exp $
  22. //
  23. // Date_TimeZone Class
  24. //
  25.  
  26. /**
  27.  * TimeZone representation class, along with time zone information data.
  28.  *
  29.  * TimeZone representation class, along with time zone information data.
  30.  * The default timezone is set from the first valid timezone id found
  31.  * in one of the following places, in this order: <br>
  32.  * 1) global $_DATE_TIMEZONE_DEFAULT<br>
  33.  * 2) system environment variable PHP_TZ<br>
  34.  * 3) system environment variable TZ<br>
  35.  * 4) the result of date('T')<br>
  36.  * If no valid timezone id is found, the default timezone is set to 'UTC'.
  37.  * You may also manually set the default timezone by passing a valid id to
  38.  * Date_TimeZone::setDefault().<br>
  39.  *
  40.  * This class includes time zone data (from zoneinfo) in the form of a global array, $_DATE_TIMEZONE_DATA.
  41.  *
  42.  *
  43.  * @author Baba Buehler <baba@babaz.com>
  44.  * @package Date
  45.  * @access public
  46.  * @version 1.0
  47.  */
  48. class Date_TimeZone
  49. {
  50.     /**
  51.      * Time Zone ID of this time zone
  52.      * @var string
  53.      */
  54.     var $id;
  55.     /**
  56.      * Long Name of this time zone (ie Central Standard Time)
  57.      * @var string
  58.      */
  59.     var $longname;
  60.     /**
  61.      * Short Name of this time zone (ie CST)
  62.      * @var string
  63.      */
  64.     var $shortname;
  65.     /**
  66.      * true if this time zone observes daylight savings time
  67.      * @var boolean
  68.      */
  69.     var $hasdst;
  70.     /**
  71.      * DST Long Name of this time zone
  72.      * @var string
  73.      */
  74.     var $dstlongname;
  75.     /**
  76.      * DST Short Name of this timezone
  77.      * @var string
  78.      */
  79.     var $dstshortname;
  80.     /**
  81.      * offset, in milliseconds, of this timezone
  82.      * @var int
  83.      */
  84.     var $offset;
  85.  
  86.     /**
  87.      * System Default Time Zone
  88.      * @var object Date_TimeZone
  89.      */
  90.     var $default;
  91.  
  92.  
  93.     /**
  94.      * Constructor
  95.      *
  96.      * Creates a new Date::TimeZone object, representing the time zone
  97.      * specified in $id.  If the supplied ID is invalid, the created
  98.      * time zone is UTC.
  99.      *
  100.      * @access public
  101.      * @param string $id the time zone id
  102.      * @return object Date_TimeZone the new Date_TimeZone object
  103.      */
  104.     function Date_TimeZone($id)
  105.     {
  106.         global $_DATE_TIMEZONE_DATA;
  107.         if(Date_TimeZone::isValidID($id)) {
  108.             $this->id = $id;
  109.             $this->longname = $_DATE_TIMEZONE_DATA[$id]['longname'];
  110.             $this->shortname = $_DATE_TIMEZONE_DATA[$id]['shortname'];
  111.             $this->offset = $_DATE_TIMEZONE_DATA[$id]['offset'];
  112.             if($_DATE_TIMEZONE_DATA[$id]['hasdst']) {
  113.                 $this->hasdst = true;
  114.                 $this->dstlongname = $_DATE_TIMEZONE_DATA[$id]['dstlongname'];
  115.                 $this->dstshortname = $_DATE_TIMEZONE_DATA[$id]['dstshortname'];
  116.             } else {
  117.                 $this->hasdst = false;
  118.                 $this->dstlongname = $this->longname;
  119.                 $this->dstshortname = $this->shortname;
  120.             }
  121.         } else {
  122.             $this->id = 'UTC';
  123.             $this->longname = $_DATE_TIMEZONE_DATA[$this->id]['longname'];
  124.             $this->shortname = $_DATE_TIMEZONE_DATA[$this->id]['shortname'];
  125.             $this->hasdst = $_DATE_TIMEZONE_DATA[$this->id]['hasdst'];
  126.             $this->offset = $_DATE_TIMEZONE_DATA[$this->id]['offset'];
  127.         }
  128.     }
  129.  
  130.     /**
  131.      * Return a TimeZone object representing the system default time zone
  132.      *
  133.      * Return a TimeZone object representing the system default time zone,
  134.      * which is initialized during the loading of TimeZone.php.
  135.      *
  136.      * @access public
  137.      * @return object Date_TimeZone the default time zone
  138.      */
  139.     function getDefault()
  140.     {
  141.         global $_DATE_TIMEZONE_DEFAULT;
  142.         return new Date_TimeZone($_DATE_TIMEZONE_DEFAULT);
  143.     }
  144.  
  145.     /**
  146.      * Sets the system default time zone to the time zone in $id
  147.      *
  148.      * Sets the system default time zone to the time zone in $id
  149.      *
  150.      * @access public
  151.      * @param string $id the time zone id to use
  152.      */
  153.     function setDefault($id)
  154.     {
  155.         global $_DATE_TIMEZONE_DEFAULT;
  156.         if(Date_TimeZone::isValidID($id)) {
  157.             $_DATE_TIMEZONE_DEFAULT = $id;
  158.         }
  159.     }
  160.  
  161.     /**
  162.      * Tests if given id is represented in the $_DATE_TIMEZONE_DATA time zone data
  163.      *
  164.      * Tests if given id is represented in the $_DATE_TIMEZONE_DATA time zone data
  165.      *
  166.      * @access public
  167.      * @param string $id the id to test
  168.      * @return boolean true if the supplied ID is valid
  169.      */
  170.     function isValidID($id)
  171.     {
  172.         global $_DATE_TIMEZONE_DATA;
  173.         if(isset($_DATE_TIMEZONE_DATA[$id])) {
  174.             return true;
  175.         } else {
  176.             return false;
  177.         }
  178.     }
  179.  
  180.     /**
  181.      * Is this time zone equal to another
  182.      *
  183.      * Tests to see if this time zone is equal (ids match)
  184.      * to a given Date_TimeZone object.
  185.      *
  186.      * @access public
  187.      * @param object Date_TimeZone $tz the timezone to test
  188.      * @return boolean true if this time zone is equal to the supplied time zone
  189.      */
  190.     function isEqual($tz)
  191.     {
  192.         if(strcasecmp($this->id, $tz->id) == 0) {
  193.             return true;
  194.         } else {
  195.             return false;
  196.         }
  197.     }
  198.  
  199.     /**
  200.      * Is this time zone equivalent to another
  201.      *
  202.      * Tests to see if this time zone is equivalent to
  203.      * a given time zone object.  Equivalence in this context
  204.      * is defined by the two time zones having an equal raw
  205.      * offset and an equal setting of "hasdst".  This is not true
  206.      * equivalence, as the two time zones may have different rules
  207.      * for the observance of DST, but this implementation does not
  208.      * know DST rules.
  209.      *
  210.      * @access public
  211.      * @param object Date_TimeZone $tz the timezone object to test
  212.      * @return boolean true if this time zone is equivalent to the supplied time zone
  213.      */
  214.     function isEquivalent($tz)
  215.     {
  216.         if($this->offset == $tz->offset && $this->hasdst == $tz->hasdst) {
  217.             return true;
  218.         } else {
  219.             return false;
  220.         }
  221.     }
  222.  
  223.     /**
  224.      * Returns true if this zone observes daylight savings time
  225.      *
  226.      * Returns true if this zone observes daylight savings time
  227.      *
  228.      * @access public
  229.      * @return boolean true if this time zone has DST
  230.      */
  231.     function hasDaylightTime()
  232.     {
  233.         return $this->hasdst;
  234.     }
  235.  
  236.     /**
  237.      * Is the given date/time in DST for this time zone
  238.      *
  239.      * Attempts to determine if a given Date object represents a date/time
  240.      * that is in DST for this time zone.  WARNINGS: this basically attempts to
  241.      * "trick" the system into telling us if we're in DST for a given time zone.
  242.      * This uses putenv() which may not work in safe mode, and relies on unix time
  243.      * which is only valid for dates from 1970 to ~2038.  This relies on the
  244.      * underlying OS calls, so it may not work on Windows or on a system where
  245.      * zoneinfo is not installed or configured properly.
  246.      *
  247.      * @access public
  248.      * @param object Date $date the date/time to test
  249.      * @return boolean true if this date is in DST for this time zone
  250.      */
  251.     function inDaylightTime($date)
  252.     {
  253.         $env_tz = "";
  254.         if(getenv("TZ")) {
  255.             $env_tz = getenv("TZ");
  256.         }
  257.         putenv("TZ=".$this->id);
  258.         $ltime = localtime($date->getTime(), true);
  259.         putenv("TZ=".$env_tz);
  260.         return $ltime['tm_isdst'];
  261.     }
  262.  
  263.     /**
  264.      * Get the DST offset for this time zone
  265.      *
  266.      * Returns the DST offset of this time zone, in milliseconds,
  267.      * if the zone observes DST, zero otherwise.  Currently the
  268.      * DST offset is hard-coded to one hour.
  269.      *
  270.      * @access public
  271.      * @return int the DST offset, in milliseconds or zero if the zone does not observe DST
  272.      */
  273.     function getDSTSavings()
  274.     {
  275.         if($this->hasdst) {
  276.             return 3600000;
  277.         } else {
  278.             return 0;
  279.         }
  280.     }
  281.  
  282.     /**
  283.      * Get the DST-corrected offset to UTC for the given date
  284.      *
  285.      * Attempts to get the offset to UTC for a given date/time, taking into
  286.      * account daylight savings time, if the time zone observes it and if
  287.      * it is in effect.  Please see the WARNINGS on Date::TimeZone::inDaylightTime().
  288.      *
  289.      *
  290.      * @access public
  291.      * @param object Date $date the Date to test
  292.      * @return int the corrected offset to UTC in milliseconds
  293.      */
  294.     function getOffset($date)
  295.     {
  296.         if($this->inDaylightTime($date)) {
  297.             return $this->offset + $this->getDSTSavings();
  298.         } else {
  299.             return $this->offset;
  300.         }
  301.     }
  302.  
  303.     /**
  304.      * Returns the list of valid time zone id strings
  305.      *
  306.      * Returns the list of valid time zone id strings
  307.      *
  308.      * @access public
  309.      * @return mixed an array of strings with the valid time zone IDs
  310.      */
  311.     function getAvailableIDs()
  312.     {
  313.         global $_DATE_TIMEZONE_DATA;
  314.         return array_keys($_DATE_TIMEZONE_DATA);
  315.     }
  316.  
  317.     /**
  318.      * Returns the id for this time zone
  319.      *
  320.      * Returns the time zone id  for this time zone, i.e. "America/Chicago"
  321.      *
  322.      * @access public
  323.      * @return string the id
  324.      */
  325.     function getID()
  326.     {
  327.         return $this->id;
  328.     }
  329.  
  330.     /**
  331.      * Returns the long name for this time zone
  332.      *
  333.      * Returns the long name for this time zone,
  334.      * i.e. "Central Standard Time"
  335.      *
  336.      * @access public
  337.      * @return string the long name
  338.      */
  339.     function getLongName()
  340.     {
  341.         return $this->longname;
  342.     }
  343.  
  344.     /**
  345.      * Returns the short name for this time zone
  346.      *
  347.      * Returns the short name for this time zone, i.e. "CST"
  348.      *
  349.      * @access public
  350.      * @return string the short name
  351.      */
  352.     function getShortName()
  353.     {
  354.         return $this->shortname;
  355.     }
  356.  
  357.     /**
  358.      * Returns the DST long name for this time zone
  359.      *
  360.      * Returns the DST long name for this time zone, i.e. "Central Daylight Time"
  361.      *
  362.      * @access public
  363.      * @return string the daylight savings time long name
  364.      */
  365.     function getDSTLongName()
  366.     {
  367.         return $this->dstlongname;
  368.     }
  369.  
  370.     /**
  371.      * Returns the DST short name for this time zone
  372.      *
  373.      * Returns the DST short name for this time zone, i.e. "CDT"
  374.      *
  375.      * @access public
  376.      * @return string the daylight savings time short name
  377.      */
  378.     function getDSTShortName()
  379.     {
  380.         return $this->dstshortname;
  381.     }
  382.  
  383.     /**
  384.      * Returns the raw (non-DST-corrected) offset from UTC/GMT for this time zone
  385.      *
  386.      * Returns the raw (non-DST-corrected) offset from UTC/GMT for this time zone
  387.      *
  388.      * @access public
  389.      * @return int the offset, in milliseconds
  390.      */
  391.     function getRawOffset()
  392.     {
  393.         return $this->offset;
  394.     }
  395.  
  396. } // Date_TimeZone
  397.  
  398.  
  399. //
  400. // Time Zone Data
  401. //  offset is in miliseconds
  402. //
  403. $GLOBALS['_DATE_TIMEZONE_DATA'] = array(
  404.     'Etc/GMT+12' => array(
  405.         'offset' => -43200000,
  406.         'longname' => "GMT-12:00",
  407.         'shortname' => 'GMT-12:00',
  408.         'hasdst' => false ),
  409.     'Etc/GMT+11' => array(
  410.         'offset' => -39600000,
  411.         'longname' => "GMT-11:00",
  412.         'shortname' => 'GMT-11:00',
  413.         'hasdst' => false ),
  414.     'MIT' => array(
  415.         'offset' => -39600000,
  416.         'longname' => "West Samoa Time",
  417.         'shortname' => 'WST',
  418.         'hasdst' => false ),
  419.     'Pacific/Apia' => array(
  420.         'offset' => -39600000,
  421.         'longname' => "West Samoa Time",
  422.         'shortname' => 'WST',
  423.         'hasdst' => false ),
  424.     'Pacific/Midway' => array(
  425.         'offset' => -39600000,
  426.         'longname' => "Samoa Standard Time",
  427.         'shortname' => 'SST',
  428.         'hasdst' => false ),
  429.     'Pacific/Niue' => array(
  430.         'offset' => -39600000,
  431.         'longname' => "Niue Time",
  432.         'shortname' => 'NUT',
  433.         'hasdst' => false ),
  434.     'Pacific/Pago_Pago' => array(
  435.         'offset' => -39600000,
  436.         'longname' => "Samoa Standard Time",
  437.         'shortname' => 'SST',
  438.         'hasdst' => false ),
  439.     'Pacific/Samoa' => array(
  440.         'offset' => -39600000,
  441.         'longname' => "Samoa Standard Time",
  442.         'shortname' => 'SST',
  443.         'hasdst' => false ),
  444.     'US/Samoa' => array(
  445.         'offset' => -39600000,
  446.         'longname' => "Samoa Standard Time",
  447.         'shortname' => 'SST',
  448.         'hasdst' => false ),
  449.     'America/Adak' => array(
  450.         'offset' => -36000000,
  451.         'longname' => "Hawaii-Aleutian Standard Time",
  452.         'shortname' => 'HAST',
  453.         'hasdst' => true,
  454.         'dstlongname' => "Hawaii-Aleutian Daylight Time",
  455.         'dstshortname' => 'HADT' ),
  456.     'America/Atka' => array(
  457.         'offset' => -36000000,
  458.         'longname' => "Hawaii-Aleutian Standard Time",
  459.         'shortname' => 'HAST',
  460.         'hasdst' => true,
  461.         'dstlongname' => "Hawaii-Aleutian Daylight Time",
  462.         'dstshortname' => 'HADT' ),
  463.     'Etc/GMT+10' => array(
  464.         'offset' => -36000000,
  465.         'longname' => "GMT-10:00",
  466.         'shortname' => 'GMT-10:00',
  467.         'hasdst' => false ),
  468.     'HST' => array(
  469.         'offset' => -36000000,
  470.         'longname' => "Hawaii Standard Time",
  471.         'shortname' => 'HST',
  472.         'hasdst' => false ),
  473.     'Pacific/Fakaofo' => array(
  474.         'offset' => -36000000,
  475.         'longname' => "Tokelau Time",
  476.         'shortname' => 'TKT',
  477.         'hasdst' => false ),
  478.     'Pacific/Honolulu' => array(
  479.         'offset' => -36000000,
  480.         'longname' => "Hawaii Standard Time",
  481.         'shortname' => 'HST',
  482.         'hasdst' => false ),
  483.     'Pacific/Johnston' => array(
  484.         'offset' => -36000000,
  485.         'longname' => "Hawaii Standard Time",
  486.         'shortname' => 'HST',
  487.         'hasdst' => false ),
  488.     'Pacific/Rarotonga' => array(
  489.         'offset' => -36000000,
  490.         'longname' => "Cook Is. Time",
  491.         'shortname' => 'CKT',
  492.         'hasdst' => false ),
  493.     'Pacific/Tahiti' => array(
  494.         'offset' => -36000000,
  495.         'longname' => "Tahiti Time",
  496.         'shortname' => 'TAHT',
  497.         'hasdst' => false ),
  498.     'SystemV/HST10' => array(
  499.         'offset' => -36000000,
  500.         'longname' => "Hawaii Standard Time",
  501.         'shortname' => 'HST',
  502.         'hasdst' => false ),
  503.     'US/Aleutian' => array(
  504.         'offset' => -36000000,
  505.         'longname' => "Hawaii-Aleutian Standard Time",
  506.         'shortname' => 'HAST',
  507.         'hasdst' => true,
  508.         'dstlongname' => "Hawaii-Aleutian Daylight Time",
  509.         'dstshortname' => 'HADT' ),
  510.     'US/Hawaii' => array(
  511.         'offset' => -36000000,
  512.         'longname' => "Hawaii Standard Time",
  513.         'shortname' => 'HST',
  514.         'hasdst' => false ),
  515.     'Pacific/Marquesas' => array(
  516.         'offset' => -34200000,
  517.         'longname' => "Marquesas Time",
  518.         'shortname' => 'MART',
  519.         'hasdst' => false ),
  520.     'AST' => array(
  521.         'offset' => -32400000,
  522.         'longname' => "Alaska Standard Time",
  523.         'shortname' => 'AKST',
  524.         'hasdst' => true,
  525.         'dstlongname' => "Alaska Daylight Time",
  526.         'dstshortname' => 'AKDT' ),
  527.     'America/Anchorage' => array(
  528.         'offset' => -32400000,
  529.         'longname' => "Alaska Standard Time",
  530.         'shortname' => 'AKST',
  531.         'hasdst' => true,
  532.         'dstlongname' => "Alaska Daylight Time",
  533.         'dstshortname' => 'AKDT' ),
  534.     'America/Juneau' => array(
  535.         'offset' => -32400000,
  536.         'longname' => "Alaska Standard Time",
  537.         'shortname' => 'AKST',
  538.         'hasdst' => true,
  539.         'dstlongname' => "Alaska Daylight Time",
  540.         'dstshortname' => 'AKDT' ),
  541.     'America/Nome' => array(
  542.         'offset' => -32400000,
  543.         'longname' => "Alaska Standard Time",
  544.         'shortname' => 'AKST',
  545.         'hasdst' => true,
  546.         'dstlongname' => "Alaska Daylight Time",
  547.         'dstshortname' => 'AKDT' ),
  548.     'America/Yakutat' => array(
  549.         'offset' => -32400000,
  550.         'longname' => "Alaska Standard Time",
  551.         'shortname' => 'AKST',
  552.         'hasdst' => true,
  553.         'dstlongname' => "Alaska Daylight Time",
  554.         'dstshortname' => 'AKDT' ),
  555.     'Etc/GMT+9' => array(
  556.         'offset' => -32400000,
  557.         'longname' => "GMT-09:00",
  558.         'shortname' => 'GMT-09:00',
  559.         'hasdst' => false ),
  560.     'Pacific/Gambier' => array(
  561.         'offset' => -32400000,
  562.         'longname' => "Gambier Time",
  563.         'shortname' => 'GAMT',
  564.         'hasdst' => false ),
  565.     'SystemV/YST9' => array(
  566.         'offset' => -32400000,
  567.         'longname' => "Gambier Time",
  568.         'shortname' => 'GAMT',
  569.         'hasdst' => false ),
  570.     'SystemV/YST9YDT' => array(
  571.         'offset' => -32400000,
  572.         'longname' => "Alaska Standard Time",
  573.         'shortname' => 'AKST',
  574.         'hasdst' => true,
  575.         'dstlongname' => "Alaska Daylight Time",
  576.         'dstshortname' => 'AKDT' ),
  577.     'US/Alaska' => array(
  578.         'offset' => -32400000,
  579.         'longname' => "Alaska Standard Time",
  580.         'shortname' => 'AKST',
  581.         'hasdst' => true,
  582.         'dstlongname' => "Alaska Daylight Time",
  583.         'dstshortname' => 'AKDT' ),
  584.     'America/Dawson' => array(
  585.         'offset' => -28800000,
  586.         'longname' => "Pacific Standard Time",
  587.         'shortname' => 'PST',
  588.         'hasdst' => true,
  589.         'dstlongname' => "Pacific Daylight Time",
  590.         'dstshortname' => 'PDT' ),
  591.     'America/Ensenada' => array(
  592.         'offset' => -28800000,
  593.         'longname' => "Pacific Standard Time",
  594.         'shortname' => 'PST',
  595.         'hasdst' => true,
  596.         'dstlongname' => "Pacific Daylight Time",
  597.         'dstshortname' => 'PDT' ),
  598.     'America/Los_Angeles' => array(
  599.         'offset' => -28800000,
  600.         'longname' => "Pacific Standard Time",
  601.         'shortname' => 'PST',
  602.         'hasdst' => true,
  603.         'dstlongname' => "Pacific Daylight Time",
  604.         'dstshortname' => 'PDT' ),
  605.     'America/Tijuana' => array(
  606.         'offset' => -28800000,
  607.         'longname' => "Pacific Standard Time",
  608.         'shortname' => 'PST',
  609.         'hasdst' => true,
  610.         'dstlongname' => "Pacific Daylight Time",
  611.         'dstshortname' => 'PDT' ),
  612.     'America/Vancouver' => array(
  613.         'offset' => -28800000,
  614.         'longname' => "Pacific Standard Time",
  615.         'shortname' => 'PST',
  616.         'hasdst' => true,
  617.         'dstlongname' => "Pacific Daylight Time",
  618.         'dstshortname' => 'PDT' ),
  619.     'America/Whitehorse' => array(
  620.         'offset' => -28800000,
  621.         'longname' => "Pacific Standard Time",
  622.         'shortname' => 'PST',
  623.         'hasdst' => true,
  624.         'dstlongname' => "Pacific Daylight Time",
  625.         'dstshortname' => 'PDT' ),
  626.     'Canada/Pacific' => array(
  627.         'offset' => -28800000,
  628.         'longname' => "Pacific Standard Time",
  629.         'shortname' => 'PST',
  630.         'hasdst' => true,
  631.         'dstlongname' => "Pacific Daylight Time",
  632.         'dstshortname' => 'PDT' ),
  633.     'Canada/Yukon' => array(
  634.         'offset' => -28800000,
  635.         'longname' => "Pacific Standard Time",
  636.         'shortname' => 'PST',
  637.         'hasdst' => true,
  638.         'dstlongname' => "Pacific Daylight Time",
  639.         'dstshortname' => 'PDT' ),
  640.     'Etc/GMT+8' => array(
  641.         'offset' => -28800000,
  642.         'longname' => "GMT-08:00",
  643.         'shortname' => 'GMT-08:00',
  644.         'hasdst' => false ),
  645.     'Mexico/BajaNorte' => array(
  646.         'offset' => -28800000,
  647.         'longname' => "Pacific Standard Time",
  648.         'shortname' => 'PST',
  649.         'hasdst' => true,
  650.         'dstlongname' => "Pacific Daylight Time",
  651.         'dstshortname' => 'PDT' ),
  652.     'PST' => array(
  653.         'offset' => -28800000,
  654.         'longname' => "Pacific Standard Time",
  655.         'shortname' => 'PST',
  656.         'hasdst' => true,
  657.         'dstlongname' => "Pacific Daylight Time",
  658.         'dstshortname' => 'PDT' ),
  659.     'PST8PDT' => array(
  660.         'offset' => -28800000,
  661.         'longname' => "Pacific Standard Time",
  662.         'shortname' => 'PST',
  663.         'hasdst' => true,
  664.         'dstlongname' => "Pacific Daylight Time",
  665.         'dstshortname' => 'PDT' ),
  666.     'Pacific/Pitcairn' => array(
  667.         'offset' => -28800000,
  668.         'longname' => "Pitcairn Standard Time",
  669.         'shortname' => 'PST',
  670.         'hasdst' => false ),
  671.     'SystemV/PST8' => array(
  672.         'offset' => -28800000,
  673.         'longname' => "Pitcairn Standard Time",
  674.         'shortname' => 'PST',
  675.         'hasdst' => false ),
  676.     'SystemV/PST8PDT' => array(
  677.         'offset' => -28800000,
  678.         'longname' => "Pacific Standard Time",
  679.         'shortname' => 'PST',
  680.         'hasdst' => true,
  681.         'dstlongname' => "Pacific Daylight Time",
  682.         'dstshortname' => 'PDT' ),
  683.     'US/Pacific' => array(
  684.         'offset' => -28800000,
  685.         'longname' => "Pacific Standard Time",
  686.         'shortname' => 'PST',
  687.         'hasdst' => true,
  688.         'dstlongname' => "Pacific Daylight Time",
  689.         'dstshortname' => 'PDT' ),
  690.     'US/Pacific-New' => array(
  691.         'offset' => -28800000,
  692.         'longname' => "Pacific Standard Time",
  693.         'shortname' => 'PST',
  694.         'hasdst' => true,
  695.         'dstlongname' => "Pacific Daylight Time",
  696.         'dstshortname' => 'PDT' ),
  697.     'America/Boise' => array(
  698.         'offset' => -25200000,
  699.         'longname' => "Mountain Standard Time",
  700.         'shortname' => 'MST',
  701.         'hasdst' => true,
  702.         'dstlongname' => "Mountain Daylight Time",
  703.         'dstshortname' => 'MDT' ),
  704.     'America/Cambridge_Bay' => array(
  705.         'offset' => -25200000,
  706.         'longname' => "Mountain Standard Time",
  707.         'shortname' => 'MST',
  708.         'hasdst' => true,
  709.         'dstlongname' => "Mountain Daylight Time",
  710.         'dstshortname' => 'MDT' ),
  711.     'America/Chihuahua' => array(
  712.         'offset' => -25200000,
  713.         'longname' => "Mountain Standard Time",
  714.         'shortname' => 'MST',
  715.         'hasdst' => true,
  716.         'dstlongname' => "Mountain Daylight Time",
  717.         'dstshortname' => 'MDT' ),
  718.     'America/Dawson_Creek' => array(
  719.         'offset' => -25200000,
  720.         'longname' => "Mountain Standard Time",
  721.         'shortname' => 'MST',
  722.         'hasdst' => false ),
  723.     'America/Denver' => array(
  724.         'offset' => -25200000,
  725.         'longname' => "Mountain Standard Time",
  726.         'shortname' => 'MST',
  727.         'hasdst' => true,
  728.         'dstlongname' => "Mountain Daylight Time",
  729.         'dstshortname' => 'MDT' ),
  730.     'America/Edmonton' => array(
  731.         'offset' => -25200000,
  732.         'longname' => "Mountain Standard Time",
  733.         'shortname' => 'MST',
  734.         'hasdst' => true,
  735.         'dstlongname' => "Mountain Daylight Time",
  736.         'dstshortname' => 'MDT' ),
  737.     'America/Hermosillo' => array(
  738.         'offset' => -25200000,
  739.         'longname' => "Mountain Standard Time",
  740.         'shortname' => 'MST',
  741.         'hasdst' => false ),
  742.     'America/Inuvik' => array(
  743.         'offset' => -25200000,
  744.         'longname' => "Mountain Standard Time",
  745.         'shortname' => 'MST',
  746.         'hasdst' => true,
  747.         'dstlongname' => "Mountain Daylight Time",
  748.         'dstshortname' => 'MDT' ),
  749.     'America/Mazatlan' => array(
  750.         'offset' => -25200000,
  751.         'longname' => "Mountain Standard Time",
  752.         'shortname' => 'MST',
  753.         'hasdst' => true,
  754.         'dstlongname' => "Mountain Daylight Time",
  755.         'dstshortname' => 'MDT' ),
  756.     'America/Phoenix' => array(
  757.         'offset' => -25200000,
  758.         'longname' => "Mountain Standard Time",
  759.         'shortname' => 'MST',
  760.         'hasdst' => false ),
  761.     'America/Shiprock' => array(
  762.         'offset' => -25200000,
  763.         'longname' => "Mountain Standard Time",
  764.         'shortname' => 'MST',
  765.         'hasdst' => true,
  766.         'dstlongname' => "Mountain Daylight Time",
  767.         'dstshortname' => 'MDT' ),
  768.     'America/Yellowknife' => array(
  769.         'offset' => -25200000,
  770.         'longname' => "Mountain Standard Time",
  771.         'shortname' => 'MST',
  772.         'hasdst' => true,
  773.         'dstlongname' => "Mountain Daylight Time",
  774.         'dstshortname' => 'MDT' ),
  775.     'Canada/Mountain' => array(
  776.         'offset' => -25200000,
  777.         'longname' => "Mountain Standard Time",
  778.         'shortname' => 'MST',
  779.         'hasdst' => true,
  780.         'dstlongname' => "Mountain Daylight Time",
  781.         'dstshortname' => 'MDT' ),
  782.     'Etc/GMT+7' => array(
  783.         'offset' => -25200000,
  784.         'longname' => "GMT-07:00",
  785.         'shortname' => 'GMT-07:00',
  786.         'hasdst' => false ),
  787.     'MST' => array(
  788.         'offset' => -25200000,
  789.         'longname' => "Mountain Standard Time",
  790.         'shortname' => 'MST',
  791.         'hasdst' => true,
  792.         'dstlongname' => "Mountain Daylight Time",
  793.         'dstshortname' => 'MDT' ),
  794.     'MST7MDT' => array(
  795.         'offset' => -25200000,
  796.         'longname' => "Mountain Standard Time",
  797.         'shortname' => 'MST',
  798.         'hasdst' => true,
  799.         'dstlongname' => "Mountain Daylight Time",
  800.         'dstshortname' => 'MDT' ),
  801.     'Mexico/BajaSur' => array(
  802.         'offset' => -25200000,
  803.         'longname' => "Mountain Standard Time",
  804.         'shortname' => 'MST',
  805.         'hasdst' => true,
  806.         'dstlongname' => "Mountain Daylight Time",
  807.         'dstshortname' => 'MDT' ),
  808.     'Navajo' => array(
  809.         'offset' => -25200000,
  810.         'longname' => "Mountain Standard Time",
  811.         'shortname' => 'MST',
  812.         'hasdst' => true,
  813.         'dstlongname' => "Mountain Daylight Time",
  814.         'dstshortname' => 'MDT' ),
  815.     'PNT' => array(
  816.         'offset' => -25200000,
  817.         'longname' => "Mountain Standard Time",
  818.         'shortname' => 'MST',
  819.         'hasdst' => false ),
  820.     'SystemV/MST7' => array(
  821.         'offset' => -25200000,
  822.         'longname' => "Mountain Standard Time",
  823.         'shortname' => 'MST',
  824.         'hasdst' => false ),
  825.     'SystemV/MST7MDT' => array(
  826.         'offset' => -25200000,
  827.         'longname' => "Mountain Standard Time",
  828.         'shortname' => 'MST',
  829.         'hasdst' => true,
  830.         'dstlongname' => "Mountain Daylight Time",
  831.         'dstshortname' => 'MDT' ),
  832.     'US/Arizona' => array(
  833.         'offset' => -25200000,
  834.         'longname' => "Mountain Standard Time",
  835.         'shortname' => 'MST',
  836.         'hasdst' => false ),
  837.     'US/Mountain' => array(
  838.         'offset' => -25200000,
  839.         'longname' => "Mountain Standard Time",
  840.         'shortname' => 'MST',
  841.         'hasdst' => true,
  842.         'dstlongname' => "Mountain Daylight Time",
  843.         'dstshortname' => 'MDT' ),
  844.     'America/Belize' => array(
  845.         'offset' => -21600000,
  846.         'longname' => "Central Standard Time",
  847.         'shortname' => 'CST',
  848.         'hasdst' => false ),
  849.     'America/Cancun' => array(
  850.         'offset' => -21600000,
  851.         'longname' => "Central Standard Time",
  852.         'shortname' => 'CST',
  853.         'hasdst' => true,
  854.         'dstlongname' => "Central Daylight Time",
  855.         'dstshortname' => 'CDT' ),
  856.     'America/Chicago' => array(
  857.         'offset' => -21600000,
  858.         'longname' => "Central Standard Time",
  859.         'shortname' => 'CST',
  860.         'hasdst' => true,
  861.         'dstlongname' => "Central Daylight Time",
  862.         'dstshortname' => 'CDT' ),
  863.     'America/Costa_Rica' => array(
  864.         'offset' => -21600000,
  865.         'longname' => "Central Standard Time",
  866.         'shortname' => 'CST',
  867.         'hasdst' => false ),
  868.     'America/El_Salvador' => array(
  869.         'offset' => -21600000,
  870.         'longname' => "Central Standard Time",
  871.         'shortname' => 'CST',
  872.         'hasdst' => false ),
  873.     'America/Guatemala' => array(
  874.         'offset' => -21600000,
  875.         'longname' => "Central Standard Time",
  876.         'shortname' => 'CST',
  877.         'hasdst' => false ),
  878.     'America/Managua' => array(
  879.         'offset' => -21600000,
  880.         'longname' => "Central Standard Time",
  881.         'shortname' => 'CST',
  882.         'hasdst' => false ),
  883.     'America/Menominee' => array(
  884.         'offset' => -21600000,
  885.         'longname' => "Central Standard Time",
  886.         'shortname' => 'CST',
  887.         'hasdst' => true,
  888.         'dstlongname' => "Central Daylight Time",
  889.         'dstshortname' => 'CDT' ),
  890.     'America/Merida' => array(
  891.         'offset' => -21600000,
  892.         'longname' => "Central Standard Time",
  893.         'shortname' => 'CST',
  894.         'hasdst' => true,
  895.         'dstlongname' => "Central Daylight Time",
  896.         'dstshortname' => 'CDT' ),
  897.     'America/Mexico_City' => array(
  898.         'offset' => -21600000,
  899.         'longname' => "Central Standard Time",
  900.         'shortname' => 'CST',
  901.         'hasdst' => false ),
  902.     'America/Monterrey' => array(
  903.         'offset' => -21600000,
  904.         'longname' => "Central Standard Time",
  905.         'shortname' => 'CST',
  906.         'hasdst' => true,
  907.         'dstlongname' => "Central Daylight Time",
  908.         'dstshortname' => 'CDT' ),
  909.     'America/North_Dakota/Center' => array(
  910.         'offset' => -21600000,
  911.         'longname' => "Central Standard Time",
  912.         'shortname' => 'CST',
  913.         'hasdst' => true,
  914.         'dstlongname' => "Central Daylight Time",
  915.         'dstshortname' => 'CDT' ),
  916.     'America/Rainy_River' => array(
  917.         'offset' => -21600000,
  918.         'longname' => "Central Standard Time",
  919.         'shortname' => 'CST',
  920.         'hasdst' => true,
  921.         'dstlongname' => "Central Daylight Time",
  922.         'dstshortname' => 'CDT' ),
  923.     'America/Rankin_Inlet' => array(
  924.         'offset' => -21600000,
  925.         'longname' => "Eastern Standard Time",
  926.         'shortname' => 'EST',
  927.         'hasdst' => true,
  928.         'dstlongname' => "Eastern Daylight Time",
  929.         'dstshortname' => 'EDT' ),
  930.     'America/Regina' => array(
  931.         'offset' => -21600000,
  932.         'longname' => "Central Standard Time",
  933.         'shortname' => 'CST',
  934.         'hasdst' => false ),
  935.     'America/Swift_Current' => array(
  936.         'offset' => -21600000,
  937.         'longname' => "Central Standard Time",
  938.         'shortname' => 'CST',
  939.         'hasdst' => false ),
  940.     'America/Tegucigalpa' => array(
  941.         'offset' => -21600000,
  942.         'longname' => "Central Standard Time",
  943.         'shortname' => 'CST',
  944.         'hasdst' => false ),
  945.     'America/Winnipeg' => array(
  946.         'offset' => -21600000,
  947.         'longname' => "Central Standard Time",
  948.         'shortname' => 'CST',
  949.         'hasdst' => true,
  950.         'dstlongname' => "Central Daylight Time",
  951.         'dstshortname' => 'CDT' ),
  952.     'CST' => array(
  953.         'offset' => -21600000,
  954.         'longname' => "Central Standard Time",
  955.         'shortname' => 'CST',
  956.         'hasdst' => true,
  957.         'dstlongname' => "Central Daylight Time",
  958.         'dstshortname' => 'CDT' ),
  959.     'CST6CDT' => array(
  960.         'offset' => -21600000,
  961.         'longname' => "Central Standard Time",
  962.         'shortname' => 'CST',
  963.         'hasdst' => true,
  964.         'dstlongname' => "Central Daylight Time",
  965.         'dstshortname' => 'CDT' ),
  966.     'Canada/Central' => array(
  967.         'offset' => -21600000,
  968.         'longname' => "Central Standard Time",
  969.         'shortname' => 'CST',
  970.         'hasdst' => true,
  971.         'dstlongname' => "Central Daylight Time",
  972.         'dstshortname' => 'CDT' ),
  973.     'Canada/East-Saskatchewan' => array(
  974.         'offset' => -21600000,
  975.         'longname' => "Central Standard Time",
  976.         'shortname' => 'CST',
  977.         'hasdst' => false ),
  978.     'Canada/Saskatchewan' => array(
  979.         'offset' => -21600000,
  980.         'longname' => "Central Standard Time",
  981.         'shortname' => 'CST',
  982.         'hasdst' => false ),
  983.     'Chile/EasterIsland' => array(
  984.         'offset' => -21600000,
  985.         'longname' => "Easter Is. Time",
  986.         'shortname' => 'EAST',
  987.         'hasdst' => true,
  988.         'dstlongname' => "Easter Is. Summer Time",
  989.         'dstshortname' => 'EASST' ),
  990.     'Etc/GMT+6' => array(
  991.         'offset' => -21600000,
  992.         'longname' => "GMT-06:00",
  993.         'shortname' => 'GMT-06:00',
  994.         'hasdst' => false ),
  995.     'Mexico/General' => array(
  996.         'offset' => -21600000,
  997.         'longname' => "Central Standard Time",
  998.         'shortname' => 'CST',
  999.         'hasdst' => false ),
  1000.     'Pacific/Easter' => array(
  1001.         'offset' => -21600000,
  1002.         'longname' => "Easter Is. Time",
  1003.         'shortname' => 'EAST',
  1004.         'hasdst' => true,
  1005.         'dstlongname' => "Easter Is. Summer Time",
  1006.         'dstshortname' => 'EASST' ),
  1007.     'Pacific/Galapagos' => array(
  1008.         'offset' => -21600000,
  1009.         'longname' => "Galapagos Time",
  1010.         'shortname' => 'GALT',
  1011.         'hasdst' => false ),
  1012.     'SystemV/CST6' => array(
  1013.         'offset' => -21600000,
  1014.         'longname' => "Central Standard Time",
  1015.         'shortname' => 'CST',
  1016.         'hasdst' => false ),
  1017.     'SystemV/CST6CDT' => array(
  1018.         'offset' => -21600000,
  1019.         'longname' => "Central Standard Time",
  1020.         'shortname' => 'CST',
  1021.         'hasdst' => true,
  1022.         'dstlongname' => "Central Daylight Time",
  1023.         'dstshortname' => 'CDT' ),
  1024.     'US/Central' => array(
  1025.         'offset' => -21600000,
  1026.         'longname' => "Central Standard Time",
  1027.         'shortname' => 'CST',
  1028.         'hasdst' => true,
  1029.         'dstlongname' => "Central Daylight Time",
  1030.         'dstshortname' => 'CDT' ),
  1031.     'America/Bogota' => array(
  1032.         'offset' => -18000000,
  1033.         'longname' => "Colombia Time",
  1034.         'shortname' => 'COT',
  1035.         'hasdst' => false ),
  1036.     'America/Cayman' => array(
  1037.         'offset' => -18000000,
  1038.         'longname' => "Eastern Standard Time",
  1039.         'shortname' => 'EST',
  1040.         'hasdst' => false ),
  1041.     'America/Detroit' => array(
  1042.         'offset' => -18000000,
  1043.         'longname' => "Eastern Standard Time",
  1044.         'shortname' => 'EST',
  1045.         'hasdst' => true,
  1046.         'dstlongname' => "Eastern Daylight Time",
  1047.         'dstshortname' => 'EDT' ),
  1048.     'America/Eirunepe' => array(
  1049.         'offset' => -18000000,
  1050.         'longname' => "Acre Time",
  1051.         'shortname' => 'ACT',
  1052.         'hasdst' => false ),
  1053.     'America/Fort_Wayne' => array(
  1054.         'offset' => -18000000,
  1055.         'longname' => "Eastern Standard Time",
  1056.         'shortname' => 'EST',
  1057.         'hasdst' => false ),
  1058.     'America/Grand_Turk' => array(
  1059.         'offset' => -18000000,
  1060.         'longname' => "Eastern Standard Time",
  1061.         'shortname' => 'EST',
  1062.         'hasdst' => true,
  1063.         'dstlongname' => "Eastern Daylight Time",
  1064.         'dstshortname' => 'EDT' ),
  1065.     'America/Guayaquil' => array(
  1066.         'offset' => -18000000,
  1067.         'longname' => "Ecuador Time",
  1068.         'shortname' => 'ECT',
  1069.         'hasdst' => false ),
  1070.     'America/Havana' => array(
  1071.         'offset' => -18000000,
  1072.         'longname' => "Central Standard Time",
  1073.         'shortname' => 'CST',
  1074.         'hasdst' => true,
  1075.         'dstlongname' => "Central Daylight Time",
  1076.         'dstshortname' => 'CDT' ),
  1077.     'America/Indiana/Indianapolis' => array(
  1078.         'offset' => -18000000,
  1079.         'longname' => "Eastern Standard Time",
  1080.         'shortname' => 'EST',
  1081.         'hasdst' => false ),
  1082.     'America/Indiana/Knox' => array(
  1083.         'offset' => -18000000,
  1084.         'longname' => "Eastern Standard Time",
  1085.         'shortname' => 'EST',
  1086.         'hasdst' => false ),
  1087.     'America/Indiana/Marengo' => array(
  1088.         'offset' => -18000000,
  1089.         'longname' => "Eastern Standard Time",
  1090.         'shortname' => 'EST',
  1091.         'hasdst' => false ),
  1092.     'America/Indiana/Vevay' => array(
  1093.         'offset' => -18000000,
  1094.         'longname' => "Eastern Standard Time",
  1095.         'shortname' => 'EST',
  1096.         'hasdst' => false ),
  1097.     'America/Indianapolis' => array(
  1098.         'offset' => -18000000,
  1099.         'longname' => "Eastern Standard Time",
  1100.         'shortname' => 'EST',
  1101.         'hasdst' => false ),
  1102.     'America/Iqaluit' => array(
  1103.         'offset' => -18000000,
  1104.         'longname' => "Eastern Standard Time",
  1105.         'shortname' => 'EST',
  1106.         'hasdst' => true,
  1107.         'dstlongname' => "Eastern Daylight Time",
  1108.         'dstshortname' => 'EDT' ),
  1109.     'America/Jamaica' => array(
  1110.         'offset' => -18000000,
  1111.         'longname' => "Eastern Standard Time",
  1112.         'shortname' => 'EST',
  1113.         'hasdst' => false ),
  1114.     'America/Kentucky/Louisville' => array(
  1115.         'offset' => -18000000,
  1116.         'longname' => "Eastern Standard Time",
  1117.         'shortname' => 'EST',
  1118.         'hasdst' => true,
  1119.         'dstlongname' => "Eastern Daylight Time",
  1120.         'dstshortname' => 'EDT' ),
  1121.     'America/Kentucky/Monticello' => array(
  1122.         'offset' => -18000000,
  1123.         'longname' => "Eastern Standard Time",
  1124.         'shortname' => 'EST',
  1125.         'hasdst' => true,
  1126.         'dstlongname' => "Eastern Daylight Time",
  1127.         'dstshortname' => 'EDT' ),
  1128.     'America/Knox_IN' => array(
  1129.         'offset' => -18000000,
  1130.         'longname' => "Eastern Standard Time",
  1131.         'shortname' => 'EST',
  1132.         'hasdst' => false ),
  1133.     'America/Lima' => array(
  1134.         'offset' => -18000000,
  1135.         'longname' => "Peru Time",
  1136.         'shortname' => 'PET',
  1137.         'hasdst' => false ),
  1138.     'America/Louisville' => array(
  1139.         'offset' => -18000000,
  1140.         'longname' => "Eastern Standard Time",
  1141.         'shortname' => 'EST',
  1142.         'hasdst' => true,
  1143.         'dstlongname' => "Eastern Daylight Time",
  1144.         'dstshortname' => 'EDT' ),
  1145.     'America/Montreal' => array(
  1146.         'offset' => -18000000,
  1147.         'longname' => "Eastern Standard Time",
  1148.         'shortname' => 'EST',
  1149.         'hasdst' => true,
  1150.         'dstlongname' => "Eastern Daylight Time",
  1151.         'dstshortname' => 'EDT' ),
  1152.     'America/Nassau' => array(
  1153.         'offset' => -18000000,
  1154.         'longname' => "Eastern Standard Time",
  1155.         'shortname' => 'EST',
  1156.         'hasdst' => true,
  1157.         'dstlongname' => "Eastern Daylight Time",
  1158.         'dstshortname' => 'EDT' ),
  1159.     'America/New_York' => array(
  1160.         'offset' => -18000000,
  1161.         'longname' => "Eastern Standard Time",
  1162.         'shortname' => 'EST',
  1163.         'hasdst' => true,
  1164.         'dstlongname' => "Eastern Daylight Time",
  1165.         'dstshortname' => 'EDT' ),
  1166.     'America/Nipigon' => array(
  1167.         'offset' => -18000000,
  1168.         'longname' => "Eastern Standard Time",
  1169.         'shortname' => 'EST',
  1170.         'hasdst' => true,
  1171.         'dstlongname' => "Eastern Daylight Time",
  1172.         'dstshortname' => 'EDT' ),
  1173.     'America/Panama' => array(
  1174.         'offset' => -18000000,
  1175.         'longname' => "Eastern Standard Time",
  1176.         'shortname' => 'EST',
  1177.         'hasdst' => false ),
  1178.     'America/Pangnirtung' => array(
  1179.         'offset' => -18000000,
  1180.         'longname' => "Eastern Standard Time",
  1181.         'shortname' => 'EST',
  1182.         'hasdst' => true,
  1183.         'dstlongname' => "Eastern Daylight Time",
  1184.         'dstshortname' => 'EDT' ),
  1185.     'America/Port-au-Prince' => array(
  1186.         'offset' => -18000000,
  1187.         'longname' => "Eastern Standard Time",
  1188.         'shortname' => 'EST',
  1189.         'hasdst' => false ),
  1190.     'America/Porto_Acre' => array(
  1191.         'offset' => -18000000,
  1192.         'longname' => "Acre Time",
  1193.         'shortname' => 'ACT',
  1194.         'hasdst' => false ),
  1195.     'America/Rio_Branco' => array(
  1196.         'offset' => -18000000,
  1197.         'longname' => "Acre Time",
  1198.         'shortname' => 'ACT',
  1199.         'hasdst' => false ),
  1200.     'America/Thunder_Bay' => array(
  1201.         'offset' => -18000000,
  1202.         'longname' => "Eastern Standard Time",
  1203.         'shortname' => 'EST',
  1204.         'hasdst' => true,
  1205.         'dstlongname' => "Eastern Daylight Time",
  1206.         'dstshortname' => 'EDT' ),
  1207.     'Brazil/Acre' => array(
  1208.         'offset' => -18000000,
  1209.         'longname' => "Acre Time",
  1210.         'shortname' => 'ACT',
  1211.         'hasdst' => false ),
  1212.     'Canada/Eastern' => array(
  1213.         'offset' => -18000000,
  1214.         'longname' => "Eastern Standard Time",
  1215.         'shortname' => 'EST',
  1216.         'hasdst' => true,
  1217.         'dstlongname' => "Eastern Daylight Time",
  1218.         'dstshortname' => 'EDT' ),
  1219.     'Cuba' => array(
  1220.         'offset' => -18000000,
  1221.         'longname' => "Central Standard Time",
  1222.         'shortname' => 'CST',
  1223.         'hasdst' => true,
  1224.         'dstlongname' => "Central Daylight Time",
  1225.         'dstshortname' => 'CDT' ),
  1226.     'EST' => array(
  1227.         'offset' => -18000000,
  1228.         'longname' => "Eastern Standard Time",
  1229.         'shortname' => 'EST',
  1230.         'hasdst' => true,
  1231.         'dstlongname' => "Eastern Daylight Time",
  1232.         'dstshortname' => 'EDT' ),
  1233.     'EST5EDT' => array(
  1234.         'offset' => -18000000,
  1235.         'longname' => "Eastern Standard Time",
  1236.         'shortname' => 'EST',
  1237.         'hasdst' => true,
  1238.         'dstlongname' => "Eastern Daylight Time",
  1239.         'dstshortname' => 'EDT' ),
  1240.     'Etc/GMT+5' => array(
  1241.         'offset' => -18000000,
  1242.         'longname' => "GMT-05:00",
  1243.         'shortname' => 'GMT-05:00',
  1244.         'hasdst' => false ),
  1245.     'IET' => array(
  1246.         'offset' => -18000000,
  1247.         'longname' => "Eastern Standard Time",
  1248.         'shortname' => 'EST',
  1249.         'hasdst' => false ),
  1250.     'Jamaica' => array(
  1251.         'offset' => -18000000,
  1252.         'longname' => "Eastern Standard Time",
  1253.         'shortname' => 'EST',
  1254.         'hasdst' => false ),
  1255.     'SystemV/EST5' => array(
  1256.         'offset' => -18000000,
  1257.         'longname' => "Eastern Standard Time",
  1258.         'shortname' => 'EST',
  1259.         'hasdst' => false ),
  1260.     'SystemV/EST5EDT' => array(
  1261.         'offset' => -18000000,
  1262.         'longname' => "Eastern Standard Time",
  1263.         'shortname' => 'EST',
  1264.         'hasdst' => true,
  1265.         'dstlongname' => "Eastern Daylight Time",
  1266.         'dstshortname' => 'EDT' ),
  1267.     'US/East-Indiana' => array(
  1268.         'offset' => -18000000,
  1269.         'longname' => "Eastern Standard Time",
  1270.         'shortname' => 'EST',
  1271.         'hasdst' => false ),
  1272.     'US/Eastern' => array(
  1273.         'offset' => -18000000,
  1274.         'longname' => "Eastern Standard Time",
  1275.         'shortname' => 'EST',
  1276.         'hasdst' => true,
  1277.         'dstlongname' => "Eastern Daylight Time",
  1278.         'dstshortname' => 'EDT' ),
  1279.     'US/Indiana-Starke' => array(
  1280.         'offset' => -18000000,
  1281.         'longname' => "Eastern Standard Time",
  1282.         'shortname' => 'EST',
  1283.         'hasdst' => false ),
  1284.     'US/Michigan' => array(
  1285.         'offset' => -18000000,
  1286.         'longname' => "Eastern Standard Time",
  1287.         'shortname' => 'EST',
  1288.         'hasdst' => true,
  1289.         'dstlongname' => "Eastern Daylight Time",
  1290.         'dstshortname' => 'EDT' ),
  1291.     'America/Anguilla' => array(
  1292.         'offset' => -14400000,
  1293.         'longname' => "Atlantic Standard Time",
  1294.         'shortname' => 'AST',
  1295.         'hasdst' => false ),
  1296.     'America/Antigua' => array(
  1297.         'offset' => -14400000,
  1298.         'longname' => "Atlantic Standard Time",
  1299.         'shortname' => 'AST',
  1300.         'hasdst' => false ),
  1301.     'America/Aruba' => array(
  1302.         'offset' => -14400000,
  1303.         'longname' => "Atlantic Standard Time",
  1304.         'shortname' => 'AST',
  1305.         'hasdst' => false ),
  1306.     'America/Asuncion' => array(
  1307.         'offset' => -14400000,
  1308.         'longname' => "Paraguay Time",
  1309.         'shortname' => 'PYT',
  1310.         'hasdst' => true,
  1311.         'dstlongname' => "Paraguay Summer Time",
  1312.         'dstshortname' => 'PYST' ),
  1313.     'America/Barbados' => array(
  1314.         'offset' => -14400000,
  1315.         'longname' => "Atlantic Standard Time",
  1316.         'shortname' => 'AST',
  1317.         'hasdst' => false ),
  1318.     'America/Boa_Vista' => array(
  1319.         'offset' => -14400000,
  1320.         'longname' => "Amazon Standard Time",
  1321.         'shortname' => 'AMT',
  1322.         'hasdst' => false ),
  1323.     'America/Caracas' => array(
  1324.         'offset' => -14400000,
  1325.         'longname' => "Venezuela Time",
  1326.         'shortname' => 'VET',
  1327.         'hasdst' => false ),
  1328.     'America/Cuiaba' => array(
  1329.         'offset' => -14400000,
  1330.         'longname' => "Amazon Standard Time",
  1331.         'shortname' => 'AMT',
  1332.         'hasdst' => true,
  1333.         'dstlongname' => "Amazon Summer Time",
  1334.         'dstshortname' => 'AMST' ),
  1335.     'America/Curacao' => array(
  1336.         'offset' => -14400000,
  1337.         'longname' => "Atlantic Standard Time",
  1338.         'shortname' => 'AST',
  1339.         'hasdst' => false ),
  1340.     'America/Dominica' => array(
  1341.         'offset' => -14400000,
  1342.         'longname' => "Atlantic Standard Time",
  1343.         'shortname' => 'AST',
  1344.         'hasdst' => false ),
  1345.     'America/Glace_Bay' => array(
  1346.         'offset' => -14400000,
  1347.         'longname' => "Atlantic Standard Time",
  1348.         'shortname' => 'AST',
  1349.         'hasdst' => true,
  1350.         'dstlongname' => "Atlantic Daylight Time",
  1351.         'dstshortname' => 'ADT' ),
  1352.     'America/Goose_Bay' => array(
  1353.         'offset' => -14400000,
  1354.         'longname' => "Atlantic Standard Time",
  1355.         'shortname' => 'AST',
  1356.         'hasdst' => true,
  1357.         'dstlongname' => "Atlantic Daylight Time",
  1358.         'dstshortname' => 'ADT' ),
  1359.     'America/Grenada' => array(
  1360.         'offset' => -14400000,
  1361.         'longname' => "Atlantic Standard Time",
  1362.         'shortname' => 'AST',
  1363.         'hasdst' => false ),
  1364.     'America/Guadeloupe' => array(
  1365.         'offset' => -14400000,
  1366.         'longname' => "Atlantic Standard Time",
  1367.         'shortname' => 'AST',
  1368.         'hasdst' => false ),
  1369.     'America/Guyana' => array(
  1370.         'offset' => -14400000,
  1371.         'longname' => "Guyana Time",
  1372.         'shortname' => 'GYT',
  1373.         'hasdst' => false ),
  1374.     'America/Halifax' => array(
  1375.         'offset' => -14400000,
  1376.         'longname' => "Atlantic Standard Time",
  1377.         'shortname' => 'AST',
  1378.         'hasdst' => true,
  1379.         'dstlongname' => "Atlantic Daylight Time",
  1380.         'dstshortname' => 'ADT' ),
  1381.     'America/La_Paz' => array(
  1382.         'offset' => -14400000,
  1383.         'longname' => "Bolivia Time",
  1384.         'shortname' => 'BOT',
  1385.         'hasdst' => false ),
  1386.     'America/Manaus' => array(
  1387.         'offset' => -14400000,
  1388.         'longname' => "Amazon Standard Time",
  1389.         'shortname' => 'AMT',
  1390.         'hasdst' => false ),
  1391.     'America/Martinique' => array(
  1392.         'offset' => -14400000,
  1393.         'longname' => "Atlantic Standard Time",
  1394.         'shortname' => 'AST',
  1395.         'hasdst' => false ),
  1396.     'America/Montserrat' => array(
  1397.         'offset' => -14400000,
  1398.         'longname' => "Atlantic Standard Time",
  1399.         'shortname' => 'AST',
  1400.         'hasdst' => false ),
  1401.     'America/Port_of_Spain' => array(
  1402.         'offset' => -14400000,
  1403.         'longname' => "Atlantic Standard Time",
  1404.         'shortname' => 'AST',
  1405.         'hasdst' => false ),
  1406.     'America/Porto_Velho' => array(
  1407.         'offset' => -14400000,
  1408.         'longname' => "Amazon Standard Time",
  1409.         'shortname' => 'AMT',
  1410.         'hasdst' => false ),
  1411.     'America/Puerto_Rico' => array(
  1412.         'offset' => -14400000,
  1413.         'longname' => "Atlantic Standard Time",
  1414.         'shortname' => 'AST',
  1415.         'hasdst' => false ),
  1416.     'America/Santiago' => array(
  1417.         'offset' => -14400000,
  1418.         'longname' => "Chile Time",
  1419.         'shortname' => 'CLT',
  1420.         'hasdst' => true,
  1421.         'dstlongname' => "Chile Summer Time",
  1422.         'dstshortname' => 'CLST' ),
  1423.     'America/Santo_Domingo' => array(
  1424.         'offset' => -14400000,
  1425.         'longname' => "Atlantic Standard Time",
  1426.         'shortname' => 'AST',
  1427.         'hasdst' => false ),
  1428.     'America/St_Kitts' => array(
  1429.         'offset' => -14400000,
  1430.         'longname' => "Atlantic Standard Time",
  1431.         'shortname' => 'AST',
  1432.         'hasdst' => false ),
  1433.     'America/St_Lucia' => array(
  1434.         'offset' => -14400000,
  1435.         'longname' => "Atlantic Standard Time",
  1436.         'shortname' => 'AST',
  1437.         'hasdst' => false ),
  1438.     'America/St_Thomas' => array(
  1439.         'offset' => -14400000,
  1440.         'longname' => "Atlantic Standard Time",
  1441.         'shortname' => 'AST',
  1442.         'hasdst' => false ),
  1443.     'America/St_Vincent' => array(
  1444.         'offset' => -14400000,
  1445.         'longname' => "Atlantic Standard Time",
  1446.         'shortname' => 'AST',
  1447.         'hasdst' => false ),
  1448.     'America/Thule' => array(
  1449.         'offset' => -14400000,
  1450.         'longname' => "Atlantic Standard Time",
  1451.         'shortname' => 'AST',
  1452.         'hasdst' => false ),
  1453.     'America/Tortola' => array(
  1454.         'offset' => -14400000,
  1455.         'longname' => "Atlantic Standard Time",
  1456.         'shortname' => 'AST',
  1457.         'hasdst' => false ),
  1458.     'America/Virgin' => array(
  1459.         'offset' => -14400000,
  1460.         'longname' => "Atlantic Standard Time",
  1461.         'shortname' => 'AST',
  1462.         'hasdst' => false ),
  1463.     'Antarctica/Palmer' => array(
  1464.         'offset' => -14400000,
  1465.         'longname' => "Chile Time",
  1466.         'shortname' => 'CLT',
  1467.         'hasdst' => true,
  1468.         'dstlongname' => "Chile Summer Time",
  1469.         'dstshortname' => 'CLST' ),
  1470.     'Atlantic/Bermuda' => array(
  1471.         'offset' => -14400000,
  1472.         'longname' => "Atlantic Standard Time",
  1473.         'shortname' => 'AST',
  1474.         'hasdst' => true,
  1475.         'dstlongname' => "Atlantic Daylight Time",
  1476.         'dstshortname' => 'ADT' ),
  1477.     'Atlantic/Stanley' => array(
  1478.         'offset' => -14400000,
  1479.         'longname' => "Falkland Is. Time",
  1480.         'shortname' => 'FKT',
  1481.         'hasdst' => true,
  1482.         'dstlongname' => "Falkland Is. Summer Time",
  1483.         'dstshortname' => 'FKST' ),
  1484.     'Brazil/West' => array(
  1485.         'offset' => -14400000,
  1486.         'longname' => "Amazon Standard Time",
  1487.         'shortname' => 'AMT',
  1488.         'hasdst' => false ),
  1489.     'Canada/Atlantic' => array(
  1490.         'offset' => -14400000,
  1491.         'longname' => "Atlantic Standard Time",
  1492.         'shortname' => 'AST',
  1493.         'hasdst' => true,
  1494.         'dstlongname' => "Atlantic Daylight Time",
  1495.         'dstshortname' => 'ADT' ),
  1496.     'Chile/Continental' => array(
  1497.         'offset' => -14400000,
  1498.         'longname' => "Chile Time",
  1499.         'shortname' => 'CLT',
  1500.         'hasdst' => true,
  1501.         'dstlongname' => "Chile Summer Time",
  1502.         'dstshortname' => 'CLST' ),
  1503.     'Etc/GMT+4' => array(
  1504.         'offset' => -14400000,
  1505.         'longname' => "GMT-04:00",
  1506.         'shortname' => 'GMT-04:00',
  1507.         'hasdst' => false ),
  1508.     'PRT' => array(
  1509.         'offset' => -14400000,
  1510.         'longname' => "Atlantic Standard Time",
  1511.         'shortname' => 'AST',
  1512.         'hasdst' => false ),
  1513.     'SystemV/AST4' => array(
  1514.         'offset' => -14400000,
  1515.         'longname' => "Atlantic Standard Time",
  1516.         'shortname' => 'AST',
  1517.         'hasdst' => false ),
  1518.     'SystemV/AST4ADT' => array(
  1519.         'offset' => -14400000,
  1520.         'longname' => "Atlantic Standard Time",
  1521.         'shortname' => 'AST',
  1522.         'hasdst' => true,
  1523.         'dstlongname' => "Atlantic Daylight Time",
  1524.         'dstshortname' => 'ADT' ),
  1525.     'America/St_Johns' => array(
  1526.         'offset' => -12600000,
  1527.         'longname' => "Newfoundland Standard Time",
  1528.         'shortname' => 'NST',
  1529.         'hasdst' => true,
  1530.         'dstlongname' => "Newfoundland Daylight Time",
  1531.         'dstshortname' => 'NDT' ),
  1532.     'CNT' => array(
  1533.         'offset' => -12600000,
  1534.         'longname' => "Newfoundland Standard Time",
  1535.         'shortname' => 'NST',
  1536.         'hasdst' => true,
  1537.         'dstlongname' => "Newfoundland Daylight Time",
  1538.         'dstshortname' => 'NDT' ),
  1539.     'Canada/Newfoundland' => array(
  1540.         'offset' => -12600000,
  1541.         'longname' => "Newfoundland Standard Time",
  1542.         'shortname' => 'NST',
  1543.         'hasdst' => true,
  1544.         'dstlongname' => "Newfoundland Daylight Time",
  1545.         'dstshortname' => 'NDT' ),
  1546.     'AGT' => array(
  1547.         'offset' => -10800000,
  1548.         'longname' => "Argentine Time",
  1549.         'shortname' => 'ART',
  1550.         'hasdst' => false ),
  1551.     'America/Araguaina' => array(
  1552.         'offset' => -10800000,
  1553.         'longname' => "Brazil Time",
  1554.         'shortname' => 'BRT',
  1555.         'hasdst' => true,
  1556.         'dstlongname' => "Brazil Summer Time",
  1557.         'dstshortname' => 'BRST' ),
  1558.     'America/Belem' => array(
  1559.         'offset' => -10800000,
  1560.         'longname' => "Brazil Time",
  1561.         'shortname' => 'BRT',
  1562.         'hasdst' => false ),
  1563.     'America/Buenos_Aires' => array(
  1564.         'offset' => -10800000,
  1565.         'longname' => "Argentine Time",
  1566.         'shortname' => 'ART',
  1567.         'hasdst' => false ),
  1568.     'America/Catamarca' => array(
  1569.         'offset' => -10800000,
  1570.         'longname' => "Argentine Time",
  1571.         'shortname' => 'ART',
  1572.         'hasdst' => false ),
  1573.     'America/Cayenne' => array(
  1574.         'offset' => -10800000,
  1575.         'longname' => "French Guiana Time",
  1576.         'shortname' => 'GFT',
  1577.         'hasdst' => false ),
  1578.     'America/Cordoba' => array(
  1579.         'offset' => -10800000,
  1580.         'longname' => "Argentine Time",
  1581.         'shortname' => 'ART',
  1582.         'hasdst' => false ),
  1583.     'America/Fortaleza' => array(
  1584.         'offset' => -10800000,
  1585.         'longname' => "Brazil Time",
  1586.         'shortname' => 'BRT',
  1587.         'hasdst' => true,
  1588.         'dstlongname' => "Brazil Summer Time",
  1589.         'dstshortname' => 'BRST' ),
  1590.     'America/Godthab' => array(
  1591.         'offset' => -10800000,
  1592.         'longname' => "Western Greenland Time",
  1593.         'shortname' => 'WGT',
  1594.         'hasdst' => true,
  1595.         'dstlongname' => "Western Greenland Summer Time",
  1596.         'dstshortname' => 'WGST' ),
  1597.     'America/Jujuy' => array(
  1598.         'offset' => -10800000,
  1599.         'longname' => "Argentine Time",
  1600.         'shortname' => 'ART',
  1601.         'hasdst' => false ),
  1602.     'America/Maceio' => array(
  1603.         'offset' => -10800000,
  1604.         'longname' => "Brazil Time",
  1605.         'shortname' => 'BRT',
  1606.         'hasdst' => true,
  1607.         'dstlongname' => "Brazil Summer Time",
  1608.         'dstshortname' => 'BRST' ),
  1609.     'America/Mendoza' => array(
  1610.         'offset' => -10800000,
  1611.         'longname' => "Argentine Time",
  1612.         'shortname' => 'ART',
  1613.         'hasdst' => false ),
  1614.     'America/Miquelon' => array(
  1615.         'offset' => -10800000,
  1616.         'longname' => "Pierre & Miquelon Standard Time",
  1617.         'shortname' => 'PMST',
  1618.         'hasdst' => true,
  1619.         'dstlongname' => "Pierre & Miquelon Daylight Time",
  1620.         'dstshortname' => 'PMDT' ),
  1621.     'America/Montevideo' => array(
  1622.         'offset' => -10800000,
  1623.         'longname' => "Uruguay Time",
  1624.         'shortname' => 'UYT',
  1625.         'hasdst' => false ),
  1626.     'America/Paramaribo' => array(
  1627.         'offset' => -10800000,
  1628.         'longname' => "Suriname Time",
  1629.         'shortname' => 'SRT',
  1630.         'hasdst' => false ),
  1631.     'America/Recife' => array(
  1632.         'offset' => -10800000,
  1633.         'longname' => "Brazil Time",
  1634.         'shortname' => 'BRT',
  1635.         'hasdst' => true,
  1636.         'dstlongname' => "Brazil Summer Time",
  1637.         'dstshortname' => 'BRST' ),
  1638.     'America/Rosario' => array(
  1639.         'offset' => -10800000,
  1640.         'longname' => "Argentine Time",
  1641.         'shortname' => 'ART',
  1642.         'hasdst' => false ),
  1643.     'America/Sao_Paulo' => array(
  1644.         'offset' => -10800000,
  1645.         'longname' => "Brazil Time",
  1646.         'shortname' => 'BRT',
  1647.         'hasdst' => true,
  1648.         'dstlongname' => "Brazil Summer Time",
  1649.         'dstshortname' => 'BRST' ),
  1650.     'BET' => array(
  1651.         'offset' => -10800000,
  1652.         'longname' => "Brazil Time",
  1653.         'shortname' => 'BRT',
  1654.         'hasdst' => true,
  1655.         'dstlongname' => "Brazil Summer Time",
  1656.         'dstshortname' => 'BRST' ),
  1657.     'Brazil/East' => array(
  1658.         'offset' => -10800000,
  1659.         'longname' => "Brazil Time",
  1660.         'shortname' => 'BRT',
  1661.         'hasdst' => true,
  1662.         'dstlongname' => "Brazil Summer Time",
  1663.         'dstshortname' => 'BRST' ),
  1664.     'Etc/GMT+3' => array(
  1665.         'offset' => -10800000,
  1666.         'longname' => "GMT-03:00",
  1667.         'shortname' => 'GMT-03:00',
  1668.         'hasdst' => false ),
  1669.     'America/Noronha' => array(
  1670.         'offset' => -7200000,
  1671.         'longname' => "Fernando de Noronha Time",
  1672.         'shortname' => 'FNT',
  1673.         'hasdst' => false ),
  1674.     'Atlantic/South_Georgia' => array(
  1675.         'offset' => -7200000,
  1676.         'longname' => "South Georgia Standard Time",
  1677.         'shortname' => 'GST',
  1678.         'hasdst' => false ),
  1679.     'Brazil/DeNoronha' => array(
  1680.         'offset' => -7200000,
  1681.         'longname' => "Fernando de Noronha Time",
  1682.         'shortname' => 'FNT',
  1683.         'hasdst' => false ),
  1684.     'Etc/GMT+2' => array(
  1685.         'offset' => -7200000,
  1686.         'longname' => "GMT-02:00",
  1687.         'shortname' => 'GMT-02:00',
  1688.         'hasdst' => false ),
  1689.     'America/Scoresbysund' => array(
  1690.         'offset' => -3600000,
  1691.         'longname' => "Eastern Greenland Time",
  1692.         'shortname' => 'EGT',
  1693.         'hasdst' => true,
  1694.         'dstlongname' => "Eastern Greenland Summer Time",
  1695.         'dstshortname' => 'EGST' ),
  1696.     'Atlantic/Azores' => array(
  1697.         'offset' => -3600000,
  1698.         'longname' => "Azores Time",
  1699.         'shortname' => 'AZOT',
  1700.         'hasdst' => true,
  1701.         'dstlongname' => "Azores Summer Time",
  1702.         'dstshortname' => 'AZOST' ),
  1703.     'Atlantic/Cape_Verde' => array(
  1704.         'offset' => -3600000,
  1705.         'longname' => "Cape Verde Time",
  1706.         'shortname' => 'CVT',
  1707.         'hasdst' => false ),
  1708.     'Etc/GMT+1' => array(
  1709.         'offset' => -3600000,
  1710.         'longname' => "GMT-01:00",
  1711.         'shortname' => 'GMT-01:00',
  1712.         'hasdst' => false ),
  1713.     'Africa/Abidjan' => array(
  1714.         'offset' => 0,
  1715.         'longname' => "Greenwich Mean Time",
  1716.         'shortname' => 'GMT',
  1717.         'hasdst' => false ),
  1718.     'Africa/Accra' => array(
  1719.         'offset' => 0,
  1720.         'longname' => "Greenwich Mean Time",
  1721.         'shortname' => 'GMT',
  1722.         'hasdst' => false ),
  1723.     'Africa/Bamako' => array(
  1724.         'offset' => 0,
  1725.         'longname' => "Greenwich Mean Time",
  1726.         'shortname' => 'GMT',
  1727.         'hasdst' => false ),
  1728.     'Africa/Banjul' => array(
  1729.         'offset' => 0,
  1730.         'longname' => "Greenwich Mean Time",
  1731.         'shortname' => 'GMT',
  1732.         'hasdst' => false ),
  1733.     'Africa/Bissau' => array(
  1734.         'offset' => 0,
  1735.         'longname' => "Greenwich Mean Time",
  1736.         'shortname' => 'GMT',
  1737.         'hasdst' => false ),
  1738.     'Africa/Casablanca' => array(
  1739.         'offset' => 0,
  1740.         'longname' => "Western European Time",
  1741.         'shortname' => 'WET',
  1742.         'hasdst' => false ),
  1743.     'Africa/Conakry' => array(
  1744.         'offset' => 0,
  1745.         'longname' => "Greenwich Mean Time",
  1746.         'shortname' => 'GMT',
  1747.         'hasdst' => false ),
  1748.     'Africa/Dakar' => array(
  1749.         'offset' => 0,
  1750.         'longname' => "Greenwich Mean Time",
  1751.         'shortname' => 'GMT',
  1752.         'hasdst' => false ),
  1753.     'Africa/El_Aaiun' => array(
  1754.         'offset' => 0,
  1755.         'longname' => "Western European Time",
  1756.         'shortname' => 'WET',
  1757.         'hasdst' => false ),
  1758.     'Africa/Freetown' => array(
  1759.         'offset' => 0,
  1760.         'longname' => "Greenwich Mean Time",
  1761.         'shortname' => 'GMT',
  1762.         'hasdst' => false ),
  1763.     'Africa/Lome' => array(
  1764.         'offset' => 0,
  1765.         'longname' => "Greenwich Mean Time",
  1766.         'shortname' => 'GMT',
  1767.         'hasdst' => false ),
  1768.     'Africa/Monrovia' => array(
  1769.         'offset' => 0,
  1770.         'longname' => "Greenwich Mean Time",
  1771.         'shortname' => 'GMT',
  1772.         'hasdst' => false ),
  1773.     'Africa/Nouakchott' => array(
  1774.         'offset' => 0,
  1775.         'longname' => "Greenwich Mean Time",
  1776.         'shortname' => 'GMT',
  1777.         'hasdst' => false ),
  1778.     'Africa/Ouagadougou' => array(
  1779.         'offset' => 0,
  1780.         'longname' => "Greenwich Mean Time",
  1781.         'shortname' => 'GMT',
  1782.         'hasdst' => false ),
  1783.     'Africa/Sao_Tome' => array(
  1784.         'offset' => 0,
  1785.         'longname' => "Greenwich Mean Time",
  1786.         'shortname' => 'GMT',
  1787.         'hasdst' => false ),
  1788.     'Africa/Timbuktu' => array(
  1789.         'offset' => 0,
  1790.         'longname' => "Greenwich Mean Time",
  1791.         'shortname' => 'GMT',
  1792.         'hasdst' => false ),
  1793.     'America/Danmarkshavn' => array(
  1794.         'offset' => 0,
  1795.         'longname' => "Greenwich Mean Time",
  1796.         'shortname' => 'GMT',
  1797.         'hasdst' => false ),
  1798.     'Atlantic/Canary' => array(
  1799.         'offset' => 0,
  1800.         'longname' => "Western European Time",
  1801.         'shortname' => 'WET',
  1802.         'hasdst' => true,
  1803.         'dstlongname' => "Western European Summer Time",
  1804.         'dstshortname' => 'WEST' ),
  1805.     'Atlantic/Faeroe' => array(
  1806.         'offset' => 0,
  1807.         'longname' => "Western European Time",
  1808.         'shortname' => 'WET',
  1809.         'hasdst' => true,
  1810.         'dstlongname' => "Western European Summer Time",
  1811.         'dstshortname' => 'WEST' ),
  1812.     'Atlantic/Madeira' => array(
  1813.         'offset' => 0,
  1814.         'longname' => "Western European Time",
  1815.         'shortname' => 'WET',
  1816.         'hasdst' => true,
  1817.         'dstlongname' => "Western European Summer Time",
  1818.         'dstshortname' => 'WEST' ),
  1819.     'Atlantic/Reykjavik' => array(
  1820.         'offset' => 0,
  1821.         'longname' => "Greenwich Mean Time",
  1822.         'shortname' => 'GMT',
  1823.         'hasdst' => false ),
  1824.     'Atlantic/St_Helena' => array(
  1825.         'offset' => 0,
  1826.         'longname' => "Greenwich Mean Time",
  1827.         'shortname' => 'GMT',
  1828.         'hasdst' => false ),
  1829.     'Eire' => array(
  1830.         'offset' => 0,
  1831.         'longname' => "Greenwich Mean Time",
  1832.         'shortname' => 'GMT',
  1833.         'hasdst' => true,
  1834.         'dstlongname' => "Irish Summer Time",
  1835.         'dstshortname' => 'IST' ),
  1836.     'Etc/GMT' => array(
  1837.         'offset' => 0,
  1838.         'longname' => "GMT+00:00",
  1839.         'shortname' => 'GMT+00:00',
  1840.         'hasdst' => false ),
  1841.     'Etc/GMT+0' => array(
  1842.         'offset' => 0,
  1843.         'longname' => "GMT+00:00",
  1844.         'shortname' => 'GMT+00:00',
  1845.         'hasdst' => false ),
  1846.     'Etc/GMT-0' => array(
  1847.         'offset' => 0,
  1848.         'longname' => "GMT+00:00",
  1849.         'shortname' => 'GMT+00:00',
  1850.         'hasdst' => false ),
  1851.     'Etc/GMT0' => array(
  1852.         'offset' => 0,
  1853.         'longname' => "GMT+00:00",
  1854.         'shortname' => 'GMT+00:00',
  1855.         'hasdst' => false ),
  1856.     'Etc/Greenwich' => array(
  1857.         'offset' => 0,
  1858.         'longname' => "Greenwich Mean Time",
  1859.         'shortname' => 'GMT',
  1860.         'hasdst' => false ),
  1861.     'Etc/UCT' => array(
  1862.         'offset' => 0,
  1863.         'longname' => "Coordinated Universal Time",
  1864.         'shortname' => 'UTC',
  1865.         'hasdst' => false ),
  1866.     'Etc/UTC' => array(
  1867.         'offset' => 0,
  1868.         'longname' => "Coordinated Universal Time",
  1869.         'shortname' => 'UTC',
  1870.         'hasdst' => false ),
  1871.     'Etc/Universal' => array(
  1872.         'offset' => 0,
  1873.         'longname' => "Coordinated Universal Time",
  1874.         'shortname' => 'UTC',
  1875.         'hasdst' => false ),
  1876.     'Etc/Zulu' => array(
  1877.         'offset' => 0,
  1878.         'longname' => "Coordinated Universal Time",
  1879.         'shortname' => 'UTC',
  1880.         'hasdst' => false ),
  1881.     'Europe/Belfast' => array(
  1882.         'offset' => 0,
  1883.         'longname' => "Greenwich Mean Time",
  1884.         'shortname' => 'GMT',
  1885.         'hasdst' => true,
  1886.         'dstlongname' => "British Summer Time",
  1887.         'dstshortname' => 'BST' ),
  1888.     'Europe/Dublin' => array(
  1889.         'offset' => 0,
  1890.         'longname' => "Greenwich Mean Time",
  1891.         'shortname' => 'GMT',
  1892.         'hasdst' => true,
  1893.         'dstlongname' => "Irish Summer Time",
  1894.         'dstshortname' => 'IST' ),
  1895.     'Europe/Lisbon' => array(
  1896.         'offset' => 0,
  1897.         'longname' => "Western European Time",
  1898.         'shortname' => 'WET',
  1899.         'hasdst' => true,
  1900.         'dstlongname' => "Western European Summer Time",
  1901.         'dstshortname' => 'WEST' ),
  1902.     'Europe/London' => array(
  1903.         'offset' => 0,
  1904.         'longname' => "Greenwich Mean Time",
  1905.         'shortname' => 'GMT',
  1906.         'hasdst' => true,
  1907.         'dstlongname' => "British Summer Time",
  1908.         'dstshortname' => 'BST' ),
  1909.     'GB' => array(
  1910.         'offset' => 0,
  1911.         'longname' => "Greenwich Mean Time",
  1912.         'shortname' => 'GMT',
  1913.         'hasdst' => true,
  1914.         'dstlongname' => "British Summer Time",
  1915.         'dstshortname' => 'BST' ),
  1916.     'GB-Eire' => array(
  1917.         'offset' => 0,
  1918.         'longname' => "Greenwich Mean Time",
  1919.         'shortname' => 'GMT',
  1920.         'hasdst' => true,
  1921.         'dstlongname' => "British Summer Time",
  1922.         'dstshortname' => 'BST' ),
  1923.     'GMT' => array(
  1924.         'offset' => 0,
  1925.         'longname' => "Greenwich Mean Time",
  1926.         'shortname' => 'GMT',
  1927.         'hasdst' => false ),
  1928.     'GMT0' => array(
  1929.         'offset' => 0,
  1930.         'longname' => "GMT+00:00",
  1931.         'shortname' => 'GMT+00:00',
  1932.         'hasdst' => false ),
  1933.     'Greenwich' => array(
  1934.         'offset' => 0,
  1935.         'longname' => "Greenwich Mean Time",
  1936.         'shortname' => 'GMT',
  1937.         'hasdst' => false ),
  1938.     'Iceland' => array(
  1939.         'offset' => 0,
  1940.         'longname' => "Greenwich Mean Time",
  1941.         'shortname' => 'GMT',
  1942.         'hasdst' => false ),
  1943.     'Portugal' => array(
  1944.         'offset' => 0,
  1945.         'longname' => "Western European Time",
  1946.         'shortname' => 'WET',
  1947.         'hasdst' => true,
  1948.         'dstlongname' => "Western European Summer Time",
  1949.         'dstshortname' => 'WEST' ),
  1950.     'UCT' => array(
  1951.         'offset' => 0,
  1952.         'longname' => "Coordinated Universal Time",
  1953.         'shortname' => 'UTC',
  1954.         'hasdst' => false ),
  1955.     'UTC' => array(
  1956.         'offset' => 0,
  1957.         'longname' => "Coordinated Universal Time",
  1958.         'shortname' => 'UTC',
  1959.         'hasdst' => false ),
  1960.     'Universal' => array(
  1961.         'offset' => 0,
  1962.         'longname' => "Coordinated Universal Time",
  1963.         'shortname' => 'UTC',
  1964.         'hasdst' => false ),
  1965.     'WET' => array(
  1966.         'offset' => 0,
  1967.         'longname' => "Western European Time",
  1968.         'shortname' => 'WET',
  1969.         'hasdst' => true,
  1970.         'dstlongname' => "Western European Summer Time",
  1971.         'dstshortname' => 'WEST' ),
  1972.     'Zulu' => array(
  1973.         'offset' => 0,
  1974.         'longname' => "Coordinated Universal Time",
  1975.         'shortname' => 'UTC',
  1976.         'hasdst' => false ),
  1977.     'Africa/Algiers' => array(
  1978.         'offset' => 3600000,
  1979.         'longname' => "Central European Time",
  1980.         'shortname' => 'CET',
  1981.         'hasdst' => false ),
  1982.     'Africa/Bangui' => array(
  1983.         'offset' => 3600000,
  1984.         'longname' => "Western African Time",
  1985.         'shortname' => 'WAT',
  1986.         'hasdst' => false ),
  1987.     'Africa/Brazzaville' => array(
  1988.         'offset' => 3600000,
  1989.         'longname' => "Western African Time",
  1990.         'shortname' => 'WAT',
  1991.         'hasdst' => false ),
  1992.     'Africa/Ceuta' => array(
  1993.         'offset' => 3600000,
  1994.         'longname' => "Central European Time",
  1995.         'shortname' => 'CET',
  1996.         'hasdst' => true,
  1997.         'dstlongname' => "Central European Summer Time",
  1998.         'dstshortname' => 'CEST' ),
  1999.     'Africa/Douala' => array(
  2000.         'offset' => 3600000,
  2001.         'longname' => "Western African Time",
  2002.         'shortname' => 'WAT',
  2003.         'hasdst' => false ),
  2004.     'Africa/Kinshasa' => array(
  2005.         'offset' => 3600000,
  2006.         'longname' => "Western African Time",
  2007.         'shortname' => 'WAT',
  2008.         'hasdst' => false ),
  2009.     'Africa/Lagos' => array(
  2010.         'offset' => 3600000,
  2011.         'longname' => "Western African Time",
  2012.         'shortname' => 'WAT',
  2013.         'hasdst' => false ),
  2014.     'Africa/Libreville' => array(
  2015.         'offset' => 3600000,
  2016.         'longname' => "Western African Time",
  2017.         'shortname' => 'WAT',
  2018.         'hasdst' => false ),
  2019.     'Africa/Luanda' => array(
  2020.         'offset' => 3600000,
  2021.         'longname' => "Western African Time",
  2022.         'shortname' => 'WAT',
  2023.         'hasdst' => false ),
  2024.     'Africa/Malabo' => array(
  2025.         'offset' => 3600000,
  2026.         'longname' => "Western African Time",
  2027.         'shortname' => 'WAT',
  2028.         'hasdst' => false ),
  2029.     'Africa/Ndjamena' => array(
  2030.         'offset' => 3600000,
  2031.         'longname' => "Western African Time",
  2032.         'shortname' => 'WAT',
  2033.         'hasdst' => false ),
  2034.     'Africa/Niamey' => array(
  2035.         'offset' => 3600000,
  2036.         'longname' => "Western African Time",
  2037.         'shortname' => 'WAT',
  2038.         'hasdst' => false ),
  2039.     'Africa/Porto-Novo' => array(
  2040.         'offset' => 3600000,
  2041.         'longname' => "Western African Time",
  2042.         'shortname' => 'WAT',
  2043.         'hasdst' => false ),
  2044.     'Africa/Tunis' => array(
  2045.         'offset' => 3600000,
  2046.         'longname' => "Central European Time",
  2047.         'shortname' => 'CET',
  2048.         'hasdst' => false ),
  2049.     'Africa/Windhoek' => array(
  2050.         'offset' => 3600000,
  2051.         'longname' => "Western African Time",
  2052.         'shortname' => 'WAT',
  2053.         'hasdst' => true,
  2054.         'dstlongname' => "Western African Summer Time",
  2055.         'dstshortname' => 'WAST' ),
  2056.     'Arctic/Longyearbyen' => array(
  2057.         'offset' => 3600000,
  2058.         'longname' => "Central European Time",
  2059.         'shortname' => 'CET',
  2060.         'hasdst' => true,
  2061.         'dstlongname' => "Central European Summer Time",
  2062.         'dstshortname' => 'CEST' ),
  2063.     'Atlantic/Jan_Mayen' => array(
  2064.         'offset' => 3600000,
  2065.         'longname' => "Eastern Greenland Time",
  2066.         'shortname' => 'EGT',
  2067.         'hasdst' => true,
  2068.         'dstlongname' => "Eastern Greenland Summer Time",
  2069.         'dstshortname' => 'EGST' ),
  2070.     'CET' => array(
  2071.         'offset' => 3600000,
  2072.         'longname' => "Central European Time",
  2073.         'shortname' => 'CET',
  2074.         'hasdst' => true,
  2075.         'dstlongname' => "Central European Summer Time",
  2076.         'dstshortname' => 'CEST' ),
  2077.     'ECT' => array(
  2078.         'offset' => 3600000,
  2079.         'longname' => "Central European Time",
  2080.         'shortname' => 'CET',
  2081.         'hasdst' => true,
  2082.         'dstlongname' => "Central European Summer Time",
  2083.         'dstshortname' => 'CEST' ),
  2084.     'Etc/GMT-1' => array(
  2085.         'offset' => 3600000,
  2086.         'longname' => "GMT+01:00",
  2087.         'shortname' => 'GMT+01:00',
  2088.         'hasdst' => false ),
  2089.     'Europe/Amsterdam' => array(
  2090.         'offset' => 3600000,
  2091.         'longname' => "Central European Time",
  2092.         'shortname' => 'CET',
  2093.         'hasdst' => true,
  2094.         'dstlongname' => "Central European Summer Time",
  2095.         'dstshortname' => 'CEST' ),
  2096.     'Europe/Andorra' => array(
  2097.         'offset' => 3600000,
  2098.         'longname' => "Central European Time",
  2099.         'shortname' => 'CET',
  2100.         'hasdst' => true,
  2101.         'dstlongname' => "Central European Summer Time",
  2102.         'dstshortname' => 'CEST' ),
  2103.     'Europe/Belgrade' => array(
  2104.         'offset' => 3600000,
  2105.         'longname' => "Central European Time",
  2106.         'shortname' => 'CET',
  2107.         'hasdst' => true,
  2108.         'dstlongname' => "Central European Summer Time",
  2109.         'dstshortname' => 'CEST' ),
  2110.     'Europe/Berlin' => array(
  2111.         'offset' => 3600000,
  2112.         'longname' => "Central European Time",
  2113.         'shortname' => 'CET',
  2114.         'hasdst' => true,
  2115.         'dstlongname' => "Central European Summer Time",
  2116.         'dstshortname' => 'CEST' ),
  2117.     'Europe/Bratislava' => array(
  2118.         'offset' => 3600000,
  2119.         'longname' => "Central European Time",
  2120.         'shortname' => 'CET',
  2121.         'hasdst' => true,
  2122.         'dstlongname' => "Central European Summer Time",
  2123.         'dstshortname' => 'CEST' ),
  2124.     'Europe/Brussels' => array(
  2125.         'offset' => 3600000,
  2126.         'longname' => "Central European Time",
  2127.         'shortname' => 'CET',
  2128.         'hasdst' => true,
  2129.         'dstlongname' => "Central European Summer Time",
  2130.         'dstshortname' => 'CEST' ),
  2131.     'Europe/Budapest' => array(
  2132.         'offset' => 3600000,
  2133.         'longname' => "Central European Time",
  2134.         'shortname' => 'CET',
  2135.         'hasdst' => true,
  2136.         'dstlongname' => "Central European Summer Time",
  2137.         'dstshortname' => 'CEST' ),
  2138.     'Europe/Copenhagen' => array(
  2139.         'offset' => 3600000,
  2140.         'longname' => "Central European Time",
  2141.         'shortname' => 'CET',
  2142.         'hasdst' => true,
  2143.         'dstlongname' => "Central European Summer Time",
  2144.         'dstshortname' => 'CEST' ),
  2145.     'Europe/Gibraltar' => array(
  2146.         'offset' => 3600000,
  2147.         'longname' => "Central European Time",
  2148.         'shortname' => 'CET',
  2149.         'hasdst' => true,
  2150.         'dstlongname' => "Central European Summer Time",
  2151.         'dstshortname' => 'CEST' ),
  2152.     'Europe/Ljubljana' => array(
  2153.         'offset' => 3600000,
  2154.         'longname' => "Central European Time",
  2155.         'shortname' => 'CET',
  2156.         'hasdst' => true,
  2157.         'dstlongname' => "Central European Summer Time",
  2158.         'dstshortname' => 'CEST' ),
  2159.     'Europe/Luxembourg' => array(
  2160.         'offset' => 3600000,
  2161.         'longname' => "Central European Time",
  2162.         'shortname' => 'CET',
  2163.         'hasdst' => true,
  2164.         'dstlongname' => "Central European Summer Time",
  2165.         'dstshortname' => 'CEST' ),
  2166.     'Europe/Madrid' => array(
  2167.         'offset' => 3600000,
  2168.         'longname' => "Central European Time",
  2169.         'shortname' => 'CET',
  2170.         'hasdst' => true,
  2171.         'dstlongname' => "Central European Summer Time",
  2172.         'dstshortname' => 'CEST' ),
  2173.     'Europe/Malta' => array(
  2174.         'offset' => 3600000,
  2175.         'longname' => "Central European Time",
  2176.         'shortname' => 'CET',
  2177.         'hasdst' => true,
  2178.         'dstlongname' => "Central European Summer Time",
  2179.         'dstshortname' => 'CEST' ),
  2180.     'Europe/Monaco' => array(
  2181.         'offset' => 3600000,
  2182.         'longname' => "Central European Time",
  2183.         'shortname' => 'CET',
  2184.         'hasdst' => true,
  2185.         'dstlongname' => "Central European Summer Time",
  2186.         'dstshortname' => 'CEST' ),
  2187.     'Europe/Oslo' => array(
  2188.         'offset' => 3600000,
  2189.         'longname' => "Central European Time",
  2190.         'shortname' => 'CET',
  2191.         'hasdst' => true,
  2192.         'dstlongname' => "Central European Summer Time",
  2193.         'dstshortname' => 'CEST' ),
  2194.     'Europe/Paris' => array(
  2195.         'offset' => 3600000,
  2196.         'longname' => "Central European Time",
  2197.         'shortname' => 'CET',
  2198.         'hasdst' => true,
  2199.         'dstlongname' => "Central European Summer Time",
  2200.         'dstshortname' => 'CEST' ),
  2201.     'Europe/Prague' => array(
  2202.         'offset' => 3600000,
  2203.         'longname' => "Central European Time",
  2204.         'shortname' => 'CET',
  2205.         'hasdst' => true,
  2206.         'dstlongname' => "Central European Summer Time",
  2207.         'dstshortname' => 'CEST' ),
  2208.     'Europe/Rome' => array(
  2209.         'offset' => 3600000,
  2210.         'longname' => "Central European Time",
  2211.         'shortname' => 'CET',
  2212.         'hasdst' => true,
  2213.         'dstlongname' => "Central European Summer Time",
  2214.         'dstshortname' => 'CEST' ),
  2215.     'Europe/San_Marino' => array(
  2216.         'offset' => 3600000,
  2217.         'longname' => "Central European Time",
  2218.         'shortname' => 'CET',
  2219.         'hasdst' => true,
  2220.         'dstlongname' => "Central European Summer Time",
  2221.         'dstshortname' => 'CEST' ),
  2222.     'Europe/Sarajevo' => array(
  2223.         'offset' => 3600000,
  2224.         'longname' => "Central European Time",
  2225.         'shortname' => 'CET',
  2226.         'hasdst' => true,
  2227.         'dstlongname' => "Central European Summer Time",
  2228.         'dstshortname' => 'CEST' ),
  2229.     'Europe/Skopje' => array(
  2230.         'offset' => 3600000,
  2231.         'longname' => "Central European Time",
  2232.         'shortname' => 'CET',
  2233.         'hasdst' => true,
  2234.         'dstlongname' => "Central European Summer Time",
  2235.         'dstshortname' => 'CEST' ),
  2236.     'Europe/Stockholm' => array(
  2237.         'offset' => 3600000,
  2238.         'longname' => "Central European Time",
  2239.         'shortname' => 'CET',
  2240.         'hasdst' => true,
  2241.         'dstlongname' => "Central European Summer Time",
  2242.         'dstshortname' => 'CEST' ),
  2243.     'Europe/Tirane' => array(
  2244.         'offset' => 3600000,
  2245.         'longname' => "Central European Time",
  2246.         'shortname' => 'CET',
  2247.         'hasdst' => true,
  2248.         'dstlongname' => "Central European Summer Time",
  2249.         'dstshortname' => 'CEST' ),
  2250.     'Europe/Vaduz' => array(
  2251.         'offset' => 3600000,
  2252.         'longname' => "Central European Time",
  2253.         'shortname' => 'CET',
  2254.         'hasdst' => true,
  2255.         'dstlongname' => "Central European Summer Time",
  2256.         'dstshortname' => 'CEST' ),
  2257.     'Europe/Vatican' => array(
  2258.         'offset' => 3600000,
  2259.         'longname' => "Central European Time",
  2260.         'shortname' => 'CET',
  2261.         'hasdst' => true,
  2262.         'dstlongname' => "Central European Summer Time",
  2263.         'dstshortname' => 'CEST' ),
  2264.     'Europe/Vienna' => array(
  2265.         'offset' => 3600000,
  2266.         'longname' => "Central European Time",
  2267.         'shortname' => 'CET',
  2268.         'hasdst' => true,
  2269.         'dstlongname' => "Central European Summer Time",
  2270.         'dstshortname' => 'CEST' ),
  2271.     'Europe/Warsaw' => array(
  2272.         'offset' => 3600000,
  2273.         'longname' => "Central European Time",
  2274.         'shortname' => 'CET',
  2275.         'hasdst' => true,
  2276.         'dstlongname' => "Central European Summer Time",
  2277.         'dstshortname' => 'CEST' ),
  2278.     'Europe/Zagreb' => array(
  2279.         'offset' => 3600000,
  2280.         'longname' => "Central European Time",
  2281.         'shortname' => 'CET',
  2282.         'hasdst' => true,
  2283.         'dstlongname' => "Central European Summer Time",
  2284.         'dstshortname' => 'CEST' ),
  2285.     'Europe/Zurich' => array(
  2286.         'offset' => 3600000,
  2287.         'longname' => "Central European Time",
  2288.         'shortname' => 'CET',
  2289.         'hasdst' => true,
  2290.         'dstlongname' => "Central European Summer Time",
  2291.         'dstshortname' => 'CEST' ),
  2292.     'MET' => array(
  2293.         'offset' => 3600000,
  2294.         'longname' => "Middle Europe Time",
  2295.         'shortname' => 'MET',
  2296.         'hasdst' => true,
  2297.         'dstlongname' => "Middle Europe Summer Time",
  2298.         'dstshortname' => 'MEST' ),
  2299.     'Poland' => array(
  2300.         'offset' => 3600000,
  2301.         'longname' => "Central European Time",
  2302.         'shortname' => 'CET',
  2303.         'hasdst' => true,
  2304.         'dstlongname' => "Central European Summer Time",
  2305.         'dstshortname' => 'CEST' ),
  2306.     'ART' => array(
  2307.         'offset' => 7200000,
  2308.         'longname' => "Eastern European Time",
  2309.         'shortname' => 'EET',
  2310.         'hasdst' => true,
  2311.         'dstlongname' => "Eastern European Summer Time",
  2312.         'dstshortname' => 'EEST' ),
  2313.     'Africa/Blantyre' => array(
  2314.         'offset' => 7200000,
  2315.         'longname' => "Central African Time",
  2316.         'shortname' => 'CAT',
  2317.         'hasdst' => false ),
  2318.     'Africa/Bujumbura' => array(
  2319.         'offset' => 7200000,
  2320.         'longname' => "Central African Time",
  2321.         'shortname' => 'CAT',
  2322.         'hasdst' => false ),
  2323.     'Africa/Cairo' => array(
  2324.         'offset' => 7200000,
  2325.         'longname' => "Eastern European Time",
  2326.         'shortname' => 'EET',
  2327.         'hasdst' => true,
  2328.         'dstlongname' => "Eastern European Summer Time",
  2329.         'dstshortname' => 'EEST' ),
  2330.     'Africa/Gaborone' => array(
  2331.         'offset' => 7200000,
  2332.         'longname' => "Central African Time",
  2333.         'shortname' => 'CAT',
  2334.         'hasdst' => false ),
  2335.     'Africa/Harare' => array(
  2336.         'offset' => 7200000,
  2337.         'longname' => "Central African Time",
  2338.         'shortname' => 'CAT',
  2339.         'hasdst' => false ),
  2340.     'Africa/Johannesburg' => array(
  2341.         'offset' => 7200000,
  2342.         'longname' => "South Africa Standard Time",
  2343.         'shortname' => 'SAST',
  2344.         'hasdst' => false ),
  2345.     'Africa/Kigali' => array(
  2346.         'offset' => 7200000,
  2347.         'longname' => "Central African Time",
  2348.         'shortname' => 'CAT',
  2349.         'hasdst' => false ),
  2350.     'Africa/Lubumbashi' => array(
  2351.         'offset' => 7200000,
  2352.         'longname' => "Central African Time",
  2353.         'shortname' => 'CAT',
  2354.         'hasdst' => false ),
  2355.     'Africa/Lusaka' => array(
  2356.         'offset' => 7200000,
  2357.         'longname' => "Central African Time",
  2358.         'shortname' => 'CAT',
  2359.         'hasdst' => false ),
  2360.     'Africa/Maputo' => array(
  2361.         'offset' => 7200000,
  2362.         'longname' => "Central African Time",
  2363.         'shortname' => 'CAT',
  2364.         'hasdst' => false ),
  2365.     'Africa/Maseru' => array(
  2366.         'offset' => 7200000,
  2367.         'longname' => "South Africa Standard Time",
  2368.         'shortname' => 'SAST',
  2369.         'hasdst' => false ),
  2370.     'Africa/Mbabane' => array(
  2371.         'offset' => 7200000,
  2372.         'longname' => "South Africa Standard Time",
  2373.         'shortname' => 'SAST',
  2374.         'hasdst' => false ),
  2375.     'Africa/Tripoli' => array(
  2376.         'offset' => 7200000,
  2377.         'longname' => "Eastern European Time",
  2378.         'shortname' => 'EET',
  2379.         'hasdst' => false ),
  2380.     'Asia/Amman' => array(
  2381.         'offset' => 7200000,
  2382.         'longname' => "Eastern European Time",
  2383.         'shortname' => 'EET',
  2384.         'hasdst' => true,
  2385.         'dstlongname' => "Eastern European Summer Time",
  2386.         'dstshortname' => 'EEST' ),
  2387.     'Asia/Beirut' => array(
  2388.         'offset' => 7200000,
  2389.         'longname' => "Eastern European Time",
  2390.         'shortname' => 'EET',
  2391.         'hasdst' => true,
  2392.         'dstlongname' => "Eastern European Summer Time",
  2393.         'dstshortname' => 'EEST' ),
  2394.     'Asia/Damascus' => array(
  2395.         'offset' => 7200000,
  2396.         'longname' => "Eastern European Time",
  2397.         'shortname' => 'EET',
  2398.         'hasdst' => true,
  2399.         'dstlongname' => "Eastern European Summer Time",
  2400.         'dstshortname' => 'EEST' ),
  2401.     'Asia/Gaza' => array(
  2402.         'offset' => 7200000,
  2403.         'longname' => "Eastern European Time",
  2404.         'shortname' => 'EET',
  2405.         'hasdst' => true,
  2406.         'dstlongname' => "Eastern European Summer Time",
  2407.         'dstshortname' => 'EEST' ),
  2408.     'Asia/Istanbul' => array(
  2409.         'offset' => 7200000,
  2410.         'longname' => "Eastern European Time",
  2411.         'shortname' => 'EET',
  2412.         'hasdst' => true,
  2413.         'dstlongname' => "Eastern European Summer Time",
  2414.         'dstshortname' => 'EEST' ),
  2415.     'Asia/Jerusalem' => array(
  2416.         'offset' => 7200000,
  2417.         'longname' => "Israel Standard Time",
  2418.         'shortname' => 'IST',
  2419.         'hasdst' => true,
  2420.         'dstlongname' => "Israel Daylight Time",
  2421.         'dstshortname' => 'IDT' ),
  2422.     'Asia/Nicosia' => array(
  2423.         'offset' => 7200000,
  2424.         'longname' => "Eastern European Time",
  2425.         'shortname' => 'EET',
  2426.         'hasdst' => true,
  2427.         'dstlongname' => "Eastern European Summer Time",
  2428.         'dstshortname' => 'EEST' ),
  2429.     'Asia/Tel_Aviv' => array(
  2430.         'offset' => 7200000,
  2431.         'longname' => "Israel Standard Time",
  2432.         'shortname' => 'IST',
  2433.         'hasdst' => true,
  2434.         'dstlongname' => "Israel Daylight Time",
  2435.         'dstshortname' => 'IDT' ),
  2436.     'CAT' => array(
  2437.         'offset' => 7200000,
  2438.         'longname' => "Central African Time",
  2439.         'shortname' => 'CAT',
  2440.         'hasdst' => false ),
  2441.     'EET' => array(
  2442.         'offset' => 7200000,
  2443.         'longname' => "Eastern European Time",
  2444.         'shortname' => 'EET',
  2445.         'hasdst' => true,
  2446.         'dstlongname' => "Eastern European Summer Time",
  2447.         'dstshortname' => 'EEST' ),
  2448.     'Egypt' => array(
  2449.         'offset' => 7200000,
  2450.         'longname' => "Eastern European Time",
  2451.         'shortname' => 'EET',
  2452.         'hasdst' => true,
  2453.         'dstlongname' => "Eastern European Summer Time",
  2454.         'dstshortname' => 'EEST' ),
  2455.     'Etc/GMT-2' => array(
  2456.         'offset' => 7200000,
  2457.         'longname' => "GMT+02:00",
  2458.         'shortname' => 'GMT+02:00',
  2459.         'hasdst' => false ),
  2460.     'Europe/Athens' => array(
  2461.         'offset' => 7200000,
  2462.         'longname' => "Eastern European Time",
  2463.         'shortname' => 'EET',
  2464.         'hasdst' => true,
  2465.         'dstlongname' => "Eastern European Summer Time",
  2466.         'dstshortname' => 'EEST' ),
  2467.     'Europe/Bucharest' => array(
  2468.         'offset' => 7200000,
  2469.         'longname' => "Eastern European Time",
  2470.         'shortname' => 'EET',
  2471.         'hasdst' => true,
  2472.         'dstlongname' => "Eastern European Summer Time",
  2473.         'dstshortname' => 'EEST' ),
  2474.     'Europe/Chisinau' => array(
  2475.         'offset' => 7200000,
  2476.         'longname' => "Eastern European Time",
  2477.         'shortname' => 'EET',
  2478.         'hasdst' => true,
  2479.         'dstlongname' => "Eastern European Summer Time",
  2480.         'dstshortname' => 'EEST' ),
  2481.     'Europe/Helsinki' => array(
  2482.         'offset' => 7200000,
  2483.         'longname' => "Eastern European Time",
  2484.         'shortname' => 'EET',
  2485.         'hasdst' => true,
  2486.         'dstlongname' => "Eastern European Summer Time",
  2487.         'dstshortname' => 'EEST' ),
  2488.     'Europe/Istanbul' => array(
  2489.         'offset' => 7200000,
  2490.         'longname' => "Eastern European Time",
  2491.         'shortname' => 'EET',
  2492.         'hasdst' => true,
  2493.         'dstlongname' => "Eastern European Summer Time",
  2494.         'dstshortname' => 'EEST' ),
  2495.     'Europe/Kaliningrad' => array(
  2496.         'offset' => 7200000,
  2497.         'longname' => "Eastern European Time",
  2498.         'shortname' => 'EET',
  2499.         'hasdst' => true,
  2500.         'dstlongname' => "Eastern European Summer Time",
  2501.         'dstshortname' => 'EEST' ),
  2502.     'Europe/Kiev' => array(
  2503.         'offset' => 7200000,
  2504.         'longname' => "Eastern European Time",
  2505.         'shortname' => 'EET',
  2506.         'hasdst' => true,
  2507.         'dstlongname' => "Eastern European Summer Time",
  2508.         'dstshortname' => 'EEST' ),
  2509.     'Europe/Minsk' => array(
  2510.         'offset' => 7200000,
  2511.         'longname' => "Eastern European Time",
  2512.         'shortname' => 'EET',
  2513.         'hasdst' => true,
  2514.         'dstlongname' => "Eastern European Summer Time",
  2515.         'dstshortname' => 'EEST' ),
  2516.     'Europe/Nicosia' => array(
  2517.         'offset' => 7200000,
  2518.         'longname' => "Eastern European Time",
  2519.         'shortname' => 'EET',
  2520.         'hasdst' => true,
  2521.         'dstlongname' => "Eastern European Summer Time",
  2522.         'dstshortname' => 'EEST' ),
  2523.     'Europe/Riga' => array(
  2524.         'offset' => 7200000,
  2525.         'longname' => "Eastern European Time",
  2526.         'shortname' => 'EET',
  2527.         'hasdst' => true,
  2528.         'dstlongname' => "Eastern European Summer Time",
  2529.         'dstshortname' => 'EEST' ),
  2530.     'Europe/Simferopol' => array(
  2531.         'offset' => 7200000,
  2532.         'longname' => "Eastern European Time",
  2533.         'shortname' => 'EET',
  2534.         'hasdst' => true,
  2535.         'dstlongname' => "Eastern European Summer Time",
  2536.         'dstshortname' => 'EEST' ),
  2537.     'Europe/Sofia' => array(
  2538.         'offset' => 7200000,
  2539.         'longname' => "Eastern European Time",
  2540.         'shortname' => 'EET',
  2541.         'hasdst' => true,
  2542.         'dstlongname' => "Eastern European Summer Time",
  2543.         'dstshortname' => 'EEST' ),
  2544.     'Europe/Tallinn' => array(
  2545.         'offset' => 7200000,
  2546.         'longname' => "Eastern European Time",
  2547.         'shortname' => 'EET',
  2548.         'hasdst' => false ),
  2549.     'Europe/Tiraspol' => array(
  2550.         'offset' => 7200000,
  2551.         'longname' => "Eastern European Time",
  2552.         'shortname' => 'EET',
  2553.         'hasdst' => true,
  2554.         'dstlongname' => "Eastern European Summer Time",
  2555.         'dstshortname' => 'EEST' ),
  2556.     'Europe/Uzhgorod' => array(
  2557.         'offset' => 7200000,
  2558.         'longname' => "Eastern European Time",
  2559.         'shortname' => 'EET',
  2560.         'hasdst' => true,
  2561.         'dstlongname' => "Eastern European Summer Time",
  2562.         'dstshortname' => 'EEST' ),
  2563.     'Europe/Vilnius' => array(
  2564.         'offset' => 7200000,
  2565.         'longname' => "Eastern European Time",
  2566.         'shortname' => 'EET',
  2567.         'hasdst' => false ),
  2568.     'Europe/Zaporozhye' => array(
  2569.         'offset' => 7200000,
  2570.         'longname' => "Eastern European Time",
  2571.         'shortname' => 'EET',
  2572.         'hasdst' => true,
  2573.         'dstlongname' => "Eastern European Summer Time",
  2574.         'dstshortname' => 'EEST' ),
  2575.     'Israel' => array(
  2576.         'offset' => 7200000,
  2577.         'longname' => "Israel Standard Time",
  2578.         'shortname' => 'IST',
  2579.         'hasdst' => true,
  2580.         'dstlongname' => "Israel Daylight Time",
  2581.         'dstshortname' => 'IDT' ),
  2582.     'Libya' => array(
  2583.         'offset' => 7200000,
  2584.         'longname' => "Eastern European Time",
  2585.         'shortname' => 'EET',
  2586.         'hasdst' => false ),
  2587.     'Turkey' => array(
  2588.         'offset' => 7200000,
  2589.         'longname' => "Eastern European Time",
  2590.         'shortname' => 'EET',
  2591.         'hasdst' => true,
  2592.         'dstlongname' => "Eastern European Summer Time",
  2593.         'dstshortname' => 'EEST' ),
  2594.     'Africa/Addis_Ababa' => array(
  2595.         'offset' => 10800000,
  2596.         'longname' => "Eastern African Time",
  2597.         'shortname' => 'EAT',
  2598.         'hasdst' => false ),
  2599.     'Africa/Asmera' => array(
  2600.         'offset' => 10800000,
  2601.         'longname' => "Eastern African Time",
  2602.         'shortname' => 'EAT',
  2603.         'hasdst' => false ),
  2604.     'Africa/Dar_es_Salaam' => array(
  2605.         'offset' => 10800000,
  2606.         'longname' => "Eastern African Time",
  2607.         'shortname' => 'EAT',
  2608.         'hasdst' => false ),
  2609.     'Africa/Djibouti' => array(
  2610.         'offset' => 10800000,
  2611.         'longname' => "Eastern African Time",
  2612.         'shortname' => 'EAT',
  2613.         'hasdst' => false ),
  2614.     'Africa/Kampala' => array(
  2615.         'offset' => 10800000,
  2616.         'longname' => "Eastern African Time",
  2617.         'shortname' => 'EAT',
  2618.         'hasdst' => false ),
  2619.     'Africa/Khartoum' => array(
  2620.         'offset' => 10800000,
  2621.         'longname' => "Eastern African Time",
  2622.         'shortname' => 'EAT',
  2623.         'hasdst' => false ),
  2624.     'Africa/Mogadishu' => array(
  2625.         'offset' => 10800000,
  2626.         'longname' => "Eastern African Time",
  2627.         'shortname' => 'EAT',
  2628.         'hasdst' => false ),
  2629.     'Africa/Nairobi' => array(
  2630.         'offset' => 10800000,
  2631.         'longname' => "Eastern African Time",
  2632.         'shortname' => 'EAT',
  2633.         'hasdst' => false ),
  2634.     'Antarctica/Syowa' => array(
  2635.         'offset' => 10800000,
  2636.         'longname' => "Syowa Time",
  2637.         'shortname' => 'SYOT',
  2638.         'hasdst' => false ),
  2639.     'Asia/Aden' => array(
  2640.         'offset' => 10800000,
  2641.         'longname' => "Arabia Standard Time",
  2642.         'shortname' => 'AST',
  2643.         'hasdst' => false ),
  2644.     'Asia/Baghdad' => array(
  2645.         'offset' => 10800000,
  2646.         'longname' => "Arabia Standard Time",
  2647.         'shortname' => 'AST',
  2648.         'hasdst' => true,
  2649.         'dstlongname' => "Arabia Daylight Time",
  2650.         'dstshortname' => 'ADT' ),
  2651.     'Asia/Bahrain' => array(
  2652.         'offset' => 10800000,
  2653.         'longname' => "Arabia Standard Time",
  2654.         'shortname' => 'AST',
  2655.         'hasdst' => false ),
  2656.     'Asia/Kuwait' => array(
  2657.         'offset' => 10800000,
  2658.         'longname' => "Arabia Standard Time",
  2659.         'shortname' => 'AST',
  2660.         'hasdst' => false ),
  2661.     'Asia/Qatar' => array(
  2662.         'offset' => 10800000,
  2663.         'longname' => "Arabia Standard Time",
  2664.         'shortname' => 'AST',
  2665.         'hasdst' => false ),
  2666.     'Asia/Riyadh' => array(
  2667.         'offset' => 10800000,
  2668.         'longname' => "Arabia Standard Time",
  2669.         'shortname' => 'AST',
  2670.         'hasdst' => false ),
  2671.     'EAT' => array(
  2672.         'offset' => 10800000,
  2673.         'longname' => "Eastern African Time",
  2674.         'shortname' => 'EAT',
  2675.         'hasdst' => false ),
  2676.     'Etc/GMT-3' => array(
  2677.         'offset' => 10800000,
  2678.         'longname' => "GMT+03:00",
  2679.         'shortname' => 'GMT+03:00',
  2680.         'hasdst' => false ),
  2681.     'Europe/Moscow' => array(
  2682.         'offset' => 10800000,
  2683.         'longname' => "Moscow Standard Time",
  2684.         'shortname' => 'MSK',
  2685.         'hasdst' => true,
  2686.         'dstlongname' => "Moscow Daylight Time",
  2687.         'dstshortname' => 'MSD' ),
  2688.     'Indian/Antananarivo' => array(
  2689.         'offset' => 10800000,
  2690.         'longname' => "Eastern African Time",
  2691.         'shortname' => 'EAT',
  2692.         'hasdst' => false ),
  2693.     'Indian/Comoro' => array(
  2694.         'offset' => 10800000,
  2695.         'longname' => "Eastern African Time",
  2696.         'shortname' => 'EAT',
  2697.         'hasdst' => false ),
  2698.     'Indian/Mayotte' => array(
  2699.         'offset' => 10800000,
  2700.         'longname' => "Eastern African Time",
  2701.         'shortname' => 'EAT',
  2702.         'hasdst' => false ),
  2703.     'W-SU' => array(
  2704.         'offset' => 10800000,
  2705.         'longname' => "Moscow Standard Time",
  2706.         'shortname' => 'MSK',
  2707.         'hasdst' => true,
  2708.         'dstlongname' => "Moscow Daylight Time",
  2709.         'dstshortname' => 'MSD' ),
  2710.     'Asia/Riyadh87' => array(
  2711.         'offset' => 11224000,
  2712.         'longname' => "GMT+03:07",
  2713.         'shortname' => 'GMT+03:07',
  2714.         'hasdst' => false ),
  2715.     'Asia/Riyadh88' => array(
  2716.         'offset' => 11224000,
  2717.         'longname' => "GMT+03:07",
  2718.         'shortname' => 'GMT+03:07',
  2719.         'hasdst' => false ),
  2720.     'Asia/Riyadh89' => array(
  2721.         'offset' => 11224000,
  2722.         'longname' => "GMT+03:07",
  2723.         'shortname' => 'GMT+03:07',
  2724.         'hasdst' => false ),
  2725.     'Mideast/Riyadh87' => array(
  2726.         'offset' => 11224000,
  2727.         'longname' => "GMT+03:07",
  2728.         'shortname' => 'GMT+03:07',
  2729.         'hasdst' => false ),
  2730.     'Mideast/Riyadh88' => array(
  2731.         'offset' => 11224000,
  2732.         'longname' => "GMT+03:07",
  2733.         'shortname' => 'GMT+03:07',
  2734.         'hasdst' => false ),
  2735.     'Mideast/Riyadh89' => array(
  2736.         'offset' => 11224000,
  2737.         'longname' => "GMT+03:07",
  2738.         'shortname' => 'GMT+03:07',
  2739.         'hasdst' => false ),
  2740.     'Asia/Tehran' => array(
  2741.         'offset' => 12600000,
  2742.         'longname' => "Iran Time",
  2743.         'shortname' => 'IRT',
  2744.         'hasdst' => true,
  2745.         'dstlongname' => "Iran Sumer Time",
  2746.         'dstshortname' => 'IRST' ),
  2747.     'Iran' => array(
  2748.         'offset' => 12600000,
  2749.         'longname' => "Iran Time",
  2750.         'shortname' => 'IRT',
  2751.         'hasdst' => true,
  2752.         'dstlongname' => "Iran Sumer Time",
  2753.         'dstshortname' => 'IRST' ),
  2754.     'Asia/Aqtau' => array(
  2755.         'offset' => 14400000,
  2756.         'longname' => "Aqtau Time",
  2757.         'shortname' => 'AQTT',
  2758.         'hasdst' => true,
  2759.         'dstlongname' => "Aqtau Summer Time",
  2760.         'dstshortname' => 'AQTST' ),
  2761.     'Asia/Baku' => array(
  2762.         'offset' => 14400000,
  2763.         'longname' => "Azerbaijan Time",
  2764.         'shortname' => 'AZT',
  2765.         'hasdst' => true,
  2766.         'dstlongname' => "Azerbaijan Summer Time",
  2767.         'dstshortname' => 'AZST' ),
  2768.     'Asia/Dubai' => array(
  2769.         'offset' => 14400000,
  2770.         'longname' => "Gulf Standard Time",
  2771.         'shortname' => 'GST',
  2772.         'hasdst' => false ),
  2773.     'Asia/Muscat' => array(
  2774.         'offset' => 14400000,
  2775.         'longname' => "Gulf Standard Time",
  2776.         'shortname' => 'GST',
  2777.         'hasdst' => false ),
  2778.     'Asia/Tbilisi' => array(
  2779.         'offset' => 14400000,
  2780.         'longname' => "Georgia Time",
  2781.         'shortname' => 'GET',
  2782.         'hasdst' => true,
  2783.         'dstlongname' => "Georgia Summer Time",
  2784.         'dstshortname' => 'GEST' ),
  2785.     'Asia/Yerevan' => array(
  2786.         'offset' => 14400000,
  2787.         'longname' => "Armenia Time",
  2788.         'shortname' => 'AMT',
  2789.         'hasdst' => true,
  2790.         'dstlongname' => "Armenia Summer Time",
  2791.         'dstshortname' => 'AMST' ),
  2792.     'Etc/GMT-4' => array(
  2793.         'offset' => 14400000,
  2794.         'longname' => "GMT+04:00",
  2795.         'shortname' => 'GMT+04:00',
  2796.         'hasdst' => false ),
  2797.     'Europe/Samara' => array(
  2798.         'offset' => 14400000,
  2799.         'longname' => "Samara Time",
  2800.         'shortname' => 'SAMT',
  2801.         'hasdst' => true,
  2802.         'dstlongname' => "Samara Summer Time",
  2803.         'dstshortname' => 'SAMST' ),
  2804.     'Indian/Mahe' => array(
  2805.         'offset' => 14400000,
  2806.         'longname' => "Seychelles Time",
  2807.         'shortname' => 'SCT',
  2808.         'hasdst' => false ),
  2809.     'Indian/Mauritius' => array(
  2810.         'offset' => 14400000,
  2811.         'longname' => "Mauritius Time",
  2812.         'shortname' => 'MUT',
  2813.         'hasdst' => false ),
  2814.     'Indian/Reunion' => array(
  2815.         'offset' => 14400000,
  2816.         'longname' => "Reunion Time",
  2817.         'shortname' => 'RET',
  2818.         'hasdst' => false ),
  2819.     'NET' => array(
  2820.         'offset' => 14400000,
  2821.         'longname' => "Armenia Time",
  2822.         'shortname' => 'AMT',
  2823.         'hasdst' => true,
  2824.         'dstlongname' => "Armenia Summer Time",
  2825.         'dstshortname' => 'AMST' ),
  2826.     'Asia/Kabul' => array(
  2827.         'offset' => 16200000,
  2828.         'longname' => "Afghanistan Time",
  2829.         'shortname' => 'AFT',
  2830.         'hasdst' => false ),
  2831.     'Asia/Aqtobe' => array(
  2832.         'offset' => 18000000,
  2833.         'longname' => "Aqtobe Time",
  2834.         'shortname' => 'AQTT',
  2835.         'hasdst' => true,
  2836.         'dstlongname' => "Aqtobe Summer Time",
  2837.         'dstshortname' => 'AQTST' ),
  2838.     'Asia/Ashgabat' => array(
  2839.         'offset' => 18000000,
  2840.         'longname' => "Turkmenistan Time",
  2841.         'shortname' => 'TMT',
  2842.         'hasdst' => false ),
  2843.     'Asia/Ashkhabad' => array(
  2844.         'offset' => 18000000,
  2845.         'longname' => "Turkmenistan Time",
  2846.         'shortname' => 'TMT',
  2847.         'hasdst' => false ),
  2848.     'Asia/Bishkek' => array(
  2849.         'offset' => 18000000,
  2850.         'longname' => "Kirgizstan Time",
  2851.         'shortname' => 'KGT',
  2852.         'hasdst' => true,
  2853.         'dstlongname' => "Kirgizstan Summer Time",
  2854.         'dstshortname' => 'KGST' ),
  2855.     'Asia/Dushanbe' => array(
  2856.         'offset' => 18000000,
  2857.         'longname' => "Tajikistan Time",
  2858.         'shortname' => 'TJT',
  2859.         'hasdst' => false ),
  2860.     'Asia/Karachi' => array(
  2861.         'offset' => 18000000,
  2862.         'longname' => "Pakistan Time",
  2863.         'shortname' => 'PKT',
  2864.         'hasdst' => false ),
  2865.     'Asia/Samarkand' => array(
  2866.         'offset' => 18000000,
  2867.         'longname' => "Turkmenistan Time",
  2868.         'shortname' => 'TMT',
  2869.         'hasdst' => false ),
  2870.     'Asia/Tashkent' => array(
  2871.         'offset' => 18000000,
  2872.         'longname' => "Uzbekistan Time",
  2873.         'shortname' => 'UZT',
  2874.         'hasdst' => false ),
  2875.     'Asia/Yekaterinburg' => array(
  2876.         'offset' => 18000000,
  2877.         'longname' => "Yekaterinburg Time",
  2878.         'shortname' => 'YEKT',
  2879.         'hasdst' => true,
  2880.         'dstlongname' => "Yekaterinburg Summer Time",
  2881.         'dstshortname' => 'YEKST' ),
  2882.     'Etc/GMT-5' => array(
  2883.         'offset' => 18000000,
  2884.         'longname' => "GMT+05:00",
  2885.         'shortname' => 'GMT+05:00',
  2886.         'hasdst' => false ),
  2887.     'Indian/Kerguelen' => array(
  2888.         'offset' => 18000000,
  2889.         'longname' => "French Southern & Antarctic Lands Time",
  2890.         'shortname' => 'TFT',
  2891.         'hasdst' => false ),
  2892.     'Indian/Maldives' => array(
  2893.         'offset' => 18000000,
  2894.         'longname' => "Maldives Time",
  2895.         'shortname' => 'MVT',
  2896.         'hasdst' => false ),
  2897.     'PLT' => array(
  2898.         'offset' => 18000000,
  2899.         'longname' => "Pakistan Time",
  2900.         'shortname' => 'PKT',
  2901.         'hasdst' => false ),
  2902.     'Asia/Calcutta' => array(
  2903.         'offset' => 19800000,
  2904.         'longname' => "India Standard Time",
  2905.         'shortname' => 'IST',
  2906.         'hasdst' => false ),
  2907.     'IST' => array(
  2908.         'offset' => 19800000,
  2909.         'longname' => "India Standard Time",
  2910.         'shortname' => 'IST',
  2911.         'hasdst' => false ),
  2912.     'Asia/Katmandu' => array(
  2913.         'offset' => 20700000,
  2914.         'longname' => "Nepal Time",
  2915.         'shortname' => 'NPT',
  2916.         'hasdst' => false ),
  2917.     'Antarctica/Mawson' => array(
  2918.         'offset' => 21600000,
  2919.         'longname' => "Mawson Time",
  2920.         'shortname' => 'MAWT',
  2921.         'hasdst' => false ),
  2922.     'Antarctica/Vostok' => array(
  2923.         'offset' => 21600000,
  2924.         'longname' => "Vostok time",
  2925.         'shortname' => 'VOST',
  2926.         'hasdst' => false ),
  2927.     'Asia/Almaty' => array(
  2928.         'offset' => 21600000,
  2929.         'longname' => "Alma-Ata Time",
  2930.         'shortname' => 'ALMT',
  2931.         'hasdst' => true,
  2932.         'dstlongname' => "Alma-Ata Summer Time",
  2933.         'dstshortname' => 'ALMST' ),
  2934.     'Asia/Colombo' => array(
  2935.         'offset' => 21600000,
  2936.         'longname' => "Sri Lanka Time",
  2937.         'shortname' => 'LKT',
  2938.         'hasdst' => false ),
  2939.     'Asia/Dacca' => array(
  2940.         'offset' => 21600000,
  2941.         'longname' => "Bangladesh Time",
  2942.         'shortname' => 'BDT',
  2943.         'hasdst' => false ),
  2944.     'Asia/Dhaka' => array(
  2945.         'offset' => 21600000,
  2946.         'longname' => "Bangladesh Time",
  2947.         'shortname' => 'BDT',
  2948.         'hasdst' => false ),
  2949.     'Asia/Novosibirsk' => array(
  2950.         'offset' => 21600000,
  2951.         'longname' => "Novosibirsk Time",
  2952.         'shortname' => 'NOVT',
  2953.         'hasdst' => true,
  2954.         'dstlongname' => "Novosibirsk Summer Time",
  2955.         'dstshortname' => 'NOVST' ),
  2956.     'Asia/Omsk' => array(
  2957.         'offset' => 21600000,
  2958.         'longname' => "Omsk Time",
  2959.         'shortname' => 'OMST',
  2960.         'hasdst' => true,
  2961.         'dstlongname' => "Omsk Summer Time",
  2962.         'dstshortname' => 'OMSST' ),
  2963.     'Asia/Thimbu' => array(
  2964.         'offset' => 21600000,
  2965.         'longname' => "Bhutan Time",
  2966.         'shortname' => 'BTT',
  2967.         'hasdst' => false ),
  2968.     'Asia/Thimphu' => array(
  2969.         'offset' => 21600000,
  2970.         'longname' => "Bhutan Time",
  2971.         'shortname' => 'BTT',
  2972.         'hasdst' => false ),
  2973.     'BDT' => array(
  2974.         'offset' => 21600000,
  2975.         'longname' => "Bangladesh Time",
  2976.         'shortname' => 'BDT',
  2977.         'hasdst' => true ),
  2978.     'Etc/GMT-6' => array(
  2979.         'offset' => 21600000,
  2980.         'longname' => "GMT+06:00",
  2981.         'shortname' => 'GMT+06:00',
  2982.         'hasdst' => false ),
  2983.     'Indian/Chagos' => array(
  2984.         'offset' => 21600000,
  2985.         'longname' => "Indian Ocean Territory Time",
  2986.         'shortname' => 'IOT',
  2987.         'hasdst' => false ),
  2988.     'Asia/Rangoon' => array(
  2989.         'offset' => 23400000,
  2990.         'longname' => "Myanmar Time",
  2991.         'shortname' => 'MMT',
  2992.         'hasdst' => false ),
  2993.     'Indian/Cocos' => array(
  2994.         'offset' => 23400000,
  2995.         'longname' => "Cocos Islands Time",
  2996.         'shortname' => 'CCT',
  2997.         'hasdst' => false ),
  2998.     'Antarctica/Davis' => array(
  2999.         'offset' => 25200000,
  3000.         'longname' => "Davis Time",
  3001.         'shortname' => 'DAVT',
  3002.         'hasdst' => false ),
  3003.     'Asia/Bangkok' => array(
  3004.         'offset' => 25200000,
  3005.         'longname' => "Indochina Time",
  3006.         'shortname' => 'ICT',
  3007.         'hasdst' => false ),
  3008.     'Asia/Hovd' => array(
  3009.         'offset' => 25200000,
  3010.         'longname' => "Hovd Time",
  3011.         'shortname' => 'HOVT',
  3012.         'hasdst' => false ),
  3013.     'Asia/Jakarta' => array(
  3014.         'offset' => 25200000,
  3015.         'longname' => "West Indonesia Time",
  3016.         'shortname' => 'WIT',
  3017.         'hasdst' => false ),
  3018.     'Asia/Krasnoyarsk' => array(
  3019.         'offset' => 25200000,
  3020.         'longname' => "Krasnoyarsk Time",
  3021.         'shortname' => 'KRAT',
  3022.         'hasdst' => true,
  3023.         'dstlongname' => "Krasnoyarsk Summer Time",
  3024.         'dstshortname' => 'KRAST' ),
  3025.     'Asia/Phnom_Penh' => array(
  3026.         'offset' => 25200000,
  3027.         'longname' => "Indochina Time",
  3028.         'shortname' => 'ICT',
  3029.         'hasdst' => false ),
  3030.     'Asia/Pontianak' => array(
  3031.         'offset' => 25200000,
  3032.         'longname' => "West Indonesia Time",
  3033.         'shortname' => 'WIT',
  3034.         'hasdst' => false ),
  3035.     'Asia/Saigon' => array(
  3036.         'offset' => 25200000,
  3037.         'longname' => "Indochina Time",
  3038.         'shortname' => 'ICT',
  3039.         'hasdst' => false ),
  3040.     'Asia/Vientiane' => array(
  3041.         'offset' => 25200000,
  3042.         'longname' => "Indochina Time",
  3043.         'shortname' => 'ICT',
  3044.         'hasdst' => false ),
  3045.     'Etc/GMT-7' => array(
  3046.         'offset' => 25200000,
  3047.         'longname' => "GMT+07:00",
  3048.         'shortname' => 'GMT+07:00',
  3049.         'hasdst' => false ),
  3050.     'Indian/Christmas' => array(
  3051.         'offset' => 25200000,
  3052.         'longname' => "Christmas Island Time",
  3053.         'shortname' => 'CXT',
  3054.         'hasdst' => false ),
  3055.     'VST' => array(
  3056.         'offset' => 25200000,
  3057.         'longname' => "Indochina Time",
  3058.         'shortname' => 'ICT',
  3059.         'hasdst' => false ),
  3060.     'Antarctica/Casey' => array(
  3061.         'offset' => 28800000,
  3062.         'longname' => "Western Standard Time (Australia)",
  3063.         'shortname' => 'WST',
  3064.         'hasdst' => false ),
  3065.     'Asia/Brunei' => array(
  3066.         'offset' => 28800000,
  3067.         'longname' => "Brunei Time",
  3068.         'shortname' => 'BNT',
  3069.         'hasdst' => false ),
  3070.     'Asia/Chongqing' => array(
  3071.         'offset' => 28800000,
  3072.         'longname' => "China Standard Time",
  3073.         'shortname' => 'CST',
  3074.         'hasdst' => false ),
  3075.     'Asia/Chungking' => array(
  3076.         'offset' => 28800000,
  3077.         'longname' => "China Standard Time",
  3078.         'shortname' => 'CST',
  3079.         'hasdst' => false ),
  3080.     'Asia/Harbin' => array(
  3081.         'offset' => 28800000,
  3082.         'longname' => "China Standard Time",
  3083.         'shortname' => 'CST',
  3084.         'hasdst' => false ),
  3085.     'Asia/Hong_Kong' => array(
  3086.         'offset' => 28800000,
  3087.         'longname' => "Hong Kong Time",
  3088.         'shortname' => 'HKT',
  3089.         'hasdst' => false ),
  3090.     'Asia/Irkutsk' => array(
  3091.         'offset' => 28800000,
  3092.         'longname' => "Irkutsk Time",
  3093.         'shortname' => 'IRKT',
  3094.         'hasdst' => true,
  3095.         'dstlongname' => "Irkutsk Summer Time",
  3096.         'dstshortname' => 'IRKST' ),
  3097.     'Asia/Kashgar' => array(
  3098.         'offset' => 28800000,
  3099.         'longname' => "China Standard Time",
  3100.         'shortname' => 'CST',
  3101.         'hasdst' => false ),
  3102.     'Asia/Kuala_Lumpur' => array(
  3103.         'offset' => 28800000,
  3104.         'longname' => "Malaysia Time",
  3105.         'shortname' => 'MYT',
  3106.         'hasdst' => false ),
  3107.     'Asia/Kuching' => array(
  3108.         'offset' => 28800000,
  3109.         'longname' => "Malaysia Time",
  3110.         'shortname' => 'MYT',
  3111.         'hasdst' => false ),
  3112.     'Asia/Macao' => array(
  3113.         'offset' => 28800000,
  3114.         'longname' => "China Standard Time",
  3115.         'shortname' => 'CST',
  3116.         'hasdst' => false ),
  3117.     'Asia/Manila' => array(
  3118.         'offset' => 28800000,
  3119.         'longname' => "Philippines Time",
  3120.         'shortname' => 'PHT',
  3121.         'hasdst' => false ),
  3122.     'Asia/Shanghai' => array(
  3123.         'offset' => 28800000,
  3124.         'longname' => "China Standard Time",
  3125.         'shortname' => 'CST',
  3126.         'hasdst' => false ),
  3127.     'Asia/Singapore' => array(
  3128.         'offset' => 28800000,
  3129.         'longname' => "Singapore Time",
  3130.         'shortname' => 'SGT',
  3131.         'hasdst' => false ),
  3132.     'Asia/Taipei' => array(
  3133.         'offset' => 28800000,
  3134.         'longname' => "China Standard Time",
  3135.         'shortname' => 'CST',
  3136.         'hasdst' => false ),
  3137.     'Asia/Ujung_Pandang' => array(
  3138.         'offset' => 28800000,
  3139.         'longname' => "Central Indonesia Time",
  3140.         'shortname' => 'CIT',
  3141.         'hasdst' => false ),
  3142.     'Asia/Ulaanbaatar' => array(
  3143.         'offset' => 28800000,
  3144.         'longname' => "Ulaanbaatar Time",
  3145.         'shortname' => 'ULAT',
  3146.         'hasdst' => false ),
  3147.     'Asia/Ulan_Bator' => array(
  3148.         'offset' => 28800000,
  3149.         'longname' => "Ulaanbaatar Time",
  3150.         'shortname' => 'ULAT',
  3151.         'hasdst' => false ),
  3152.     'Asia/Urumqi' => array(
  3153.         'offset' => 28800000,
  3154.         'longname' => "China Standard Time",
  3155.         'shortname' => 'CST',
  3156.         'hasdst' => false ),
  3157.     'Australia/Perth' => array(
  3158.         'offset' => 28800000,
  3159.         'longname' => "Western Standard Time (Australia)",
  3160.         'shortname' => 'WST',
  3161.         'hasdst' => false ),
  3162.     'Australia/West' => array(
  3163.         'offset' => 28800000,
  3164.         'longname' => "Western Standard Time (Australia)",
  3165.         'shortname' => 'WST',
  3166.         'hasdst' => false ),
  3167.     'CTT' => array(
  3168.         'offset' => 28800000,
  3169.         'longname' => "China Standard Time",
  3170.         'shortname' => 'CST',
  3171.         'hasdst' => false ),
  3172.     'Etc/GMT-8' => array(
  3173.         'offset' => 28800000,
  3174.         'longname' => "GMT+08:00",
  3175.         'shortname' => 'GMT+08:00',
  3176.         'hasdst' => false ),
  3177.     'Hongkong' => array(
  3178.         'offset' => 28800000,
  3179.         'longname' => "Hong Kong Time",
  3180.         'shortname' => 'HKT',
  3181.         'hasdst' => false ),
  3182.     'PRC' => array(
  3183.         'offset' => 28800000,
  3184.         'longname' => "China Standard Time",
  3185.         'shortname' => 'CST',
  3186.         'hasdst' => false ),
  3187.     'Singapore' => array(
  3188.         'offset' => 28800000,
  3189.         'longname' => "Singapore Time",
  3190.         'shortname' => 'SGT',
  3191.         'hasdst' => false ),
  3192.     'Asia/Choibalsan' => array(
  3193.         'offset' => 32400000,
  3194.         'longname' => "Choibalsan Time",
  3195.         'shortname' => 'CHOT',
  3196.         'hasdst' => false ),
  3197.     'Asia/Dili' => array(
  3198.         'offset' => 32400000,
  3199.         'longname' => "East Timor Time",
  3200.         'shortname' => 'TPT',
  3201.         'hasdst' => false ),
  3202.     'Asia/Jayapura' => array(
  3203.         'offset' => 32400000,
  3204.         'longname' => "East Indonesia Time",
  3205.         'shortname' => 'EIT',
  3206.         'hasdst' => false ),
  3207.     'Asia/Pyongyang' => array(
  3208.         'offset' => 32400000,
  3209.         'longname' => "Korea Standard Time",
  3210.         'shortname' => 'KST',
  3211.         'hasdst' => false ),
  3212.     'Asia/Seoul' => array(
  3213.         'offset' => 32400000,
  3214.         'longname' => "Korea Standard Time",
  3215.         'shortname' => 'KST',
  3216.         'hasdst' => false ),
  3217.     'Asia/Tokyo' => array(
  3218.         'offset' => 32400000,
  3219.         'longname' => "Japan Standard Time",
  3220.         'shortname' => 'JST',
  3221.         'hasdst' => false ),
  3222.     'Asia/Yakutsk' => array(
  3223.         'offset' => 32400000,
  3224.         'longname' => "Yakutsk Time",
  3225.         'shortname' => 'YAKT',
  3226.         'hasdst' => true,
  3227.         'dstlongname' => "Yaktsk Summer Time",
  3228.         'dstshortname' => 'YAKST' ),
  3229.     'Etc/GMT-9' => array(
  3230.         'offset' => 32400000,
  3231.         'longname' => "GMT+09:00",
  3232.         'shortname' => 'GMT+09:00',
  3233.         'hasdst' => false ),
  3234.     'JST' => array(
  3235.         'offset' => 32400000,
  3236.         'longname' => "Japan Standard Time",
  3237.         'shortname' => 'JST',
  3238.         'hasdst' => false ),
  3239.     'Japan' => array(
  3240.         'offset' => 32400000,
  3241.         'longname' => "Japan Standard Time",
  3242.         'shortname' => 'JST',
  3243.         'hasdst' => false ),
  3244.     'Pacific/Palau' => array(
  3245.         'offset' => 32400000,
  3246.         'longname' => "Palau Time",
  3247.         'shortname' => 'PWT',
  3248.         'hasdst' => false ),
  3249.     'ROK' => array(
  3250.         'offset' => 32400000,
  3251.         'longname' => "Korea Standard Time",
  3252.         'shortname' => 'KST',
  3253.         'hasdst' => false ),
  3254.     'ACT' => array(
  3255.         'offset' => 34200000,
  3256.         'longname' => "Central Standard Time (Northern Territory)",
  3257.         'shortname' => 'CST',
  3258.         'hasdst' => false ),
  3259.     'Australia/Adelaide' => array(
  3260.         'offset' => 34200000,
  3261.         'longname' => "Central Standard Time (South Australia)",
  3262.         'shortname' => 'CST',
  3263.         'hasdst' => true,
  3264.         'dstlongname' => "Central Summer Time (South Australia)",
  3265.         'dstshortname' => 'CST' ),
  3266.     'Australia/Broken_Hill' => array(
  3267.         'offset' => 34200000,
  3268.         'longname' => "Central Standard Time (South Australia/New South Wales)",
  3269.         'shortname' => 'CST',
  3270.         'hasdst' => true,
  3271.         'dstlongname' => "Central Summer Time (South Australia/New South Wales)",
  3272.         'dstshortname' => 'CST' ),
  3273.     'Australia/Darwin' => array(
  3274.         'offset' => 34200000,
  3275.         'longname' => "Central Standard Time (Northern Territory)",
  3276.         'shortname' => 'CST',
  3277.         'hasdst' => false ),
  3278.     'Australia/North' => array(
  3279.         'offset' => 34200000,
  3280.         'longname' => "Central Standard Time (Northern Territory)",
  3281.         'shortname' => 'CST',
  3282.         'hasdst' => false ),
  3283.     'Australia/South' => array(
  3284.         'offset' => 34200000,
  3285.         'longname' => "Central Standard Time (South Australia)",
  3286.         'shortname' => 'CST',
  3287.         'hasdst' => true,
  3288.         'dstlongname' => "Central Summer Time (South Australia)",
  3289.         'dstshortname' => 'CST' ),
  3290.     'Australia/Yancowinna' => array(
  3291.         'offset' => 34200000,
  3292.         'longname' => "Central Standard Time (South Australia/New South Wales)",
  3293.         'shortname' => 'CST',
  3294.         'hasdst' => true,
  3295.         'dstlongname' => "Central Summer Time (South Australia/New South Wales)",
  3296.         'dstshortname' => 'CST' ),
  3297.     'AET' => array(
  3298.         'offset' => 36000000,
  3299.         'longname' => "Eastern Standard Time (New South Wales)",
  3300.         'shortname' => 'EST',
  3301.         'hasdst' => true,
  3302.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3303.         'dstshortname' => 'EST' ),
  3304.     'Antarctica/DumontDUrville' => array(
  3305.         'offset' => 36000000,
  3306.         'longname' => "Dumont-d'Urville Time",
  3307.         'shortname' => 'DDUT',
  3308.         'hasdst' => false ),
  3309.     'Asia/Sakhalin' => array(
  3310.         'offset' => 36000000,
  3311.         'longname' => "Sakhalin Time",
  3312.         'shortname' => 'SAKT',
  3313.         'hasdst' => true,
  3314.         'dstlongname' => "Sakhalin Summer Time",
  3315.         'dstshortname' => 'SAKST' ),
  3316.     'Asia/Vladivostok' => array(
  3317.         'offset' => 36000000,
  3318.         'longname' => "Vladivostok Time",
  3319.         'shortname' => 'VLAT',
  3320.         'hasdst' => true,
  3321.         'dstlongname' => "Vladivostok Summer Time",
  3322.         'dstshortname' => 'VLAST' ),
  3323.     'Australia/ACT' => array(
  3324.         'offset' => 36000000,
  3325.         'longname' => "Eastern Standard Time (New South Wales)",
  3326.         'shortname' => 'EST',
  3327.         'hasdst' => true,
  3328.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3329.         'dstshortname' => 'EST' ),
  3330.     'Australia/Brisbane' => array(
  3331.         'offset' => 36000000,
  3332.         'longname' => "Eastern Standard Time (Queensland)",
  3333.         'shortname' => 'EST',
  3334.         'hasdst' => false ),
  3335.     'Australia/Canberra' => array(
  3336.         'offset' => 36000000,
  3337.         'longname' => "Eastern Standard Time (New South Wales)",
  3338.         'shortname' => 'EST',
  3339.         'hasdst' => true,
  3340.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3341.         'dstshortname' => 'EST' ),
  3342.     'Australia/Hobart' => array(
  3343.         'offset' => 36000000,
  3344.         'longname' => "Eastern Standard Time (Tasmania)",
  3345.         'shortname' => 'EST',
  3346.         'hasdst' => true,
  3347.         'dstlongname' => "Eastern Summer Time (Tasmania)",
  3348.         'dstshortname' => 'EST' ),
  3349.     'Australia/Lindeman' => array(
  3350.         'offset' => 36000000,
  3351.         'longname' => "Eastern Standard Time (Queensland)",
  3352.         'shortname' => 'EST',
  3353.         'hasdst' => false ),
  3354.     'Australia/Melbourne' => array(
  3355.         'offset' => 36000000,
  3356.         'longname' => "Eastern Standard Time (Victoria)",
  3357.         'shortname' => 'EST',
  3358.         'hasdst' => true,
  3359.         'dstlongname' => "Eastern Summer Time (Victoria)",
  3360.         'dstshortname' => 'EST' ),
  3361.     'Australia/NSW' => array(
  3362.         'offset' => 36000000,
  3363.         'longname' => "Eastern Standard Time (New South Wales)",
  3364.         'shortname' => 'EST',
  3365.         'hasdst' => true,
  3366.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3367.         'dstshortname' => 'EST' ),
  3368.     'Australia/Queensland' => array(
  3369.         'offset' => 36000000,
  3370.         'longname' => "Eastern Standard Time (Queensland)",
  3371.         'shortname' => 'EST',
  3372.         'hasdst' => false ),
  3373.     'Australia/Sydney' => array(
  3374.         'offset' => 36000000,
  3375.         'longname' => "Eastern Standard Time (New South Wales)",
  3376.         'shortname' => 'EST',
  3377.         'hasdst' => true,
  3378.         'dstlongname' => "Eastern Summer Time (New South Wales)",
  3379.         'dstshortname' => 'EST' ),
  3380.     'Australia/Tasmania' => array(
  3381.         'offset' => 36000000,
  3382.         'longname' => "Eastern Standard Time (Tasmania)",
  3383.         'shortname' => 'EST',
  3384.         'hasdst' => true,
  3385.         'dstlongname' => "Eastern Summer Time (Tasmania)",
  3386.         'dstshortname' => 'EST' ),
  3387.     'Australia/Victoria' => array(
  3388.         'offset' => 36000000,
  3389.         'longname' => "Eastern Standard Time (Victoria)",
  3390.         'shortname' => 'EST',
  3391.         'hasdst' => true,
  3392.         'dstlongname' => "Eastern Summer Time (Victoria)",
  3393.         'dstshortname' => 'EST' ),
  3394.     'Etc/GMT-10' => array(
  3395.         'offset' => 36000000,
  3396.         'longname' => "GMT+10:00",
  3397.         'shortname' => 'GMT+10:00',
  3398.         'hasdst' => false ),
  3399.     'Pacific/Guam' => array(
  3400.         'offset' => 36000000,
  3401.         'longname' => "Chamorro Standard Time",
  3402.         'shortname' => 'ChST',
  3403.         'hasdst' => false ),
  3404.     'Pacific/Port_Moresby' => array(
  3405.         'offset' => 36000000,
  3406.         'longname' => "Papua New Guinea Time",
  3407.         'shortname' => 'PGT',
  3408.         'hasdst' => false ),
  3409.     'Pacific/Saipan' => array(
  3410.         'offset' => 36000000,
  3411.         'longname' => "Chamorro Standard Time",
  3412.         'shortname' => 'ChST',
  3413.         'hasdst' => false ),
  3414.     'Pacific/Truk' => array(
  3415.         'offset' => 36000000,
  3416.         'longname' => "Truk Time",
  3417.         'shortname' => 'TRUT',
  3418.         'hasdst' => false ),
  3419.     'Pacific/Yap' => array(
  3420.         'offset' => 36000000,
  3421.         'longname' => "Yap Time",
  3422.         'shortname' => 'YAPT',
  3423.         'hasdst' => false ),
  3424.     'Australia/LHI' => array(
  3425.         'offset' => 37800000,
  3426.         'longname' => "Load Howe Standard Time",
  3427.         'shortname' => 'LHST',
  3428.         'hasdst' => true,
  3429.         'dstlongname' => "Load Howe Summer Time",
  3430.         'dstshortname' => 'LHST' ),
  3431.     'Australia/Lord_Howe' => array(
  3432.         'offset' => 37800000,
  3433.         'longname' => "Load Howe Standard Time",
  3434.         'shortname' => 'LHST',
  3435.         'hasdst' => true,
  3436.         'dstlongname' => "Load Howe Summer Time",
  3437.         'dstshortname' => 'LHST' ),
  3438.     'Asia/Magadan' => array(
  3439.         'offset' => 39600000,
  3440.         'longname' => "Magadan Time",
  3441.         'shortname' => 'MAGT',
  3442.         'hasdst' => true,
  3443.         'dstlongname' => "Magadan Summer Time",
  3444.         'dstshortname' => 'MAGST' ),
  3445.     'Etc/GMT-11' => array(
  3446.         'offset' => 39600000,
  3447.         'longname' => "GMT+11:00",
  3448.         'shortname' => 'GMT+11:00',
  3449.         'hasdst' => false ),
  3450.     'Pacific/Efate' => array(
  3451.         'offset' => 39600000,
  3452.         'longname' => "Vanuatu Time",
  3453.         'shortname' => 'VUT',
  3454.         'hasdst' => false ),
  3455.     'Pacific/Guadalcanal' => array(
  3456.         'offset' => 39600000,
  3457.         'longname' => "Solomon Is. Time",
  3458.         'shortname' => 'SBT',
  3459.         'hasdst' => false ),
  3460.     'Pacific/Kosrae' => array(
  3461.         'offset' => 39600000,
  3462.         'longname' => "Kosrae Time",
  3463.         'shortname' => 'KOST',
  3464.         'hasdst' => false ),
  3465.     'Pacific/Noumea' => array(
  3466.         'offset' => 39600000,
  3467.         'longname' => "New Caledonia Time",
  3468.         'shortname' => 'NCT',
  3469.         'hasdst' => false ),
  3470.     'Pacific/Ponape' => array(
  3471.         'offset' => 39600000,
  3472.         'longname' => "Ponape Time",
  3473.         'shortname' => 'PONT',
  3474.         'hasdst' => false ),
  3475.     'SST' => array(
  3476.         'offset' => 39600000,
  3477.         'longname' => "Solomon Is. Time",
  3478.         'shortname' => 'SBT',
  3479.         'hasdst' => false ),
  3480.     'Pacific/Norfolk' => array(
  3481.         'offset' => 41400000,
  3482.         'longname' => "Norfolk Time",
  3483.         'shortname' => 'NFT',
  3484.         'hasdst' => false ),
  3485.     'Antarctica/McMurdo' => array(
  3486.         'offset' => 43200000,
  3487.         'longname' => "New Zealand Standard Time",
  3488.         'shortname' => 'NZST',
  3489.         'hasdst' => true,
  3490.         'dstlongname' => "New Zealand Daylight Time",
  3491.         'dstshortname' => 'NZDT' ),
  3492.     'Antarctica/South_Pole' => array(
  3493.         'offset' => 43200000,
  3494.         'longname' => "New Zealand Standard Time",
  3495.         'shortname' => 'NZST',
  3496.         'hasdst' => true,
  3497.         'dstlongname' => "New Zealand Daylight Time",
  3498.         'dstshortname' => 'NZDT' ),
  3499.     'Asia/Anadyr' => array(
  3500.         'offset' => 43200000,
  3501.         'longname' => "Anadyr Time",
  3502.         'shortname' => 'ANAT',
  3503.         'hasdst' => true,
  3504.         'dstlongname' => "Anadyr Summer Time",
  3505.         'dstshortname' => 'ANAST' ),
  3506.     'Asia/Kamchatka' => array(
  3507.         'offset' => 43200000,
  3508.         'longname' => "Petropavlovsk-Kamchatski Time",
  3509.         'shortname' => 'PETT',
  3510.         'hasdst' => true,
  3511.         'dstlongname' => "Petropavlovsk-Kamchatski Summer Time",
  3512.         'dstshortname' => 'PETST' ),
  3513.     'Etc/GMT-12' => array(
  3514.         'offset' => 43200000,
  3515.         'longname' => "GMT+12:00",
  3516.         'shortname' => 'GMT+12:00',
  3517.         'hasdst' => false ),
  3518.     'Kwajalein' => array(
  3519.         'offset' => 43200000,
  3520.         'longname' => "Marshall Islands Time",
  3521.         'shortname' => 'MHT',
  3522.         'hasdst' => false ),
  3523.     'NST' => array(
  3524.         'offset' => 43200000,
  3525.         'longname' => "New Zealand Standard Time",
  3526.         'shortname' => 'NZST',
  3527.         'hasdst' => true,
  3528.         'dstlongname' => "New Zealand Daylight Time",
  3529.         'dstshortname' => 'NZDT' ),
  3530.     'NZ' => array(
  3531.         'offset' => 43200000,
  3532.         'longname' => "New Zealand Standard Time",
  3533.         'shortname' => 'NZST',
  3534.         'hasdst' => true,
  3535.         'dstlongname' => "New Zealand Daylight Time",
  3536.         'dstshortname' => 'NZDT' ),
  3537.     'Pacific/Auckland' => array(
  3538.         'offset' => 43200000,
  3539.         'longname' => "New Zealand Standard Time",
  3540.         'shortname' => 'NZST',
  3541.         'hasdst' => true,
  3542.         'dstlongname' => "New Zealand Daylight Time",
  3543.         'dstshortname' => 'NZDT' ),
  3544.     'Pacific/Fiji' => array(
  3545.         'offset' => 43200000,
  3546.         'longname' => "Fiji Time",
  3547.         'shortname' => 'FJT',
  3548.         'hasdst' => false ),
  3549.     'Pacific/Funafuti' => array(
  3550.         'offset' => 43200000,
  3551.         'longname' => "Tuvalu Time",
  3552.         'shortname' => 'TVT',
  3553.         'hasdst' => false ),
  3554.     'Pacific/Kwajalein' => array(
  3555.         'offset' => 43200000,
  3556.         'longname' => "Marshall Islands Time",
  3557.         'shortname' => 'MHT',
  3558.         'hasdst' => false ),
  3559.     'Pacific/Majuro' => array(
  3560.         'offset' => 43200000,
  3561.         'longname' => "Marshall Islands Time",
  3562.         'shortname' => 'MHT',
  3563.         'hasdst' => false ),
  3564.     'Pacific/Nauru' => array(
  3565.         'offset' => 43200000,
  3566.         'longname' => "Nauru Time",
  3567.         'shortname' => 'NRT',
  3568.         'hasdst' => false ),
  3569.     'Pacific/Tarawa' => array(
  3570.         'offset' => 43200000,
  3571.         'longname' => "Gilbert Is. Time",
  3572.         'shortname' => 'GILT',
  3573.         'hasdst' => false ),
  3574.     'Pacific/Wake' => array(
  3575.         'offset' => 43200000,
  3576.         'longname' => "Wake Time",
  3577.         'shortname' => 'WAKT',
  3578.         'hasdst' => false ),
  3579.     'Pacific/Wallis' => array(
  3580.         'offset' => 43200000,
  3581.         'longname' => "Wallis & Futuna Time",
  3582.         'shortname' => 'WFT',
  3583.         'hasdst' => false ),
  3584.     'NZ-CHAT' => array(
  3585.         'offset' => 45900000,
  3586.         'longname' => "Chatham Standard Time",
  3587.         'shortname' => 'CHAST',
  3588.         'hasdst' => true,
  3589.         'dstlongname' => "Chatham Daylight Time",
  3590.         'dstshortname' => 'CHADT' ),
  3591.     'Pacific/Chatham' => array(
  3592.         'offset' => 45900000,
  3593.         'longname' => "Chatham Standard Time",
  3594.         'shortname' => 'CHAST',
  3595.         'hasdst' => true,
  3596.         'dstlongname' => "Chatham Daylight Time",
  3597.         'dstshortname' => 'CHADT' ),
  3598.     'Etc/GMT-13' => array(
  3599.         'offset' => 46800000,
  3600.         'longname' => "GMT+13:00",
  3601.         'shortname' => 'GMT+13:00',
  3602.         'hasdst' => false ),
  3603.     'Pacific/Enderbury' => array(
  3604.         'offset' => 46800000,
  3605.         'longname' => "Phoenix Is. Time",
  3606.         'shortname' => 'PHOT',
  3607.         'hasdst' => false ),
  3608.     'Pacific/Tongatapu' => array(
  3609.         'offset' => 46800000,
  3610.         'longname' => "Tonga Time",
  3611.         'shortname' => 'TOT',
  3612.         'hasdst' => false ),
  3613.     'Etc/GMT-14' => array(
  3614.         'offset' => 50400000,
  3615.         'longname' => "GMT+14:00",
  3616.         'shortname' => 'GMT+14:00',
  3617.         'hasdst' => false ),
  3618.     'Pacific/Kiritimati' => array(
  3619.         'offset' => 50400000,
  3620.         'longname' => "Line Is. Time",
  3621.         'shortname' => 'LINT',
  3622.         'hasdst' => false )
  3623. );
  3624.  
  3625. //
  3626. // Initialize default timezone
  3627. //  First try _DATE_TIMEZONE_DEFAULT global,
  3628. //  then PHP_TZ environment var, then TZ environment var
  3629. //
  3630. if(isset($_DATE_TIMEZONE_DEFAULT)
  3631.     && Date_TimeZone::isValidID($_DATE_TIMEZONE_DEFAULT)
  3632. ) {
  3633.     Date_TimeZone::setDefault($_DATE_TIMEZONE_DEFAULT);
  3634. } elseif (getenv('PHP_TZ') && Date_TimeZone::isValidID(getenv('PHP_TZ'))) {
  3635.     Date_TimeZone::setDefault(getenv('PHP_TZ'));
  3636. } elseif (getenv('TZ') && Date_TimeZone::isValidID(getenv('TZ'))) {
  3637.     Date_TimeZone::setDefault(getenv('TZ'));
  3638. } elseif (Date_TimeZone::isValidID(date('T'))) {
  3639.     Date_TimeZone::setDefault(date('T'));
  3640. } else {
  3641.     Date_TimeZone::setDefault('UTC');
  3642. }
  3643. //
  3644. // END
  3645. ?>
  3646.